2022-11-03关于cv2.imread()读取图片返回None的原因及解决办法

这是一篇讲述自己如何刨根问底获得cv2.imread()读取图片返回None原因的总结,希望对大家有帮助

1、具体问题以及来由

因为想要用自己的数据来训练yolo模型,所以免不了要收集数据,于是乎我就在百度图库爬取了一定数量的图片,但是在训练yolo模型的时候出现了cv2.imread()无法读取图片,返回结果是None的问题

2、原因及解决办法

1)百度解决方法
毫无疑问,遇见问题就得去搜索网上的资料,看一下前人是否出现相同的情况以及相关的解决方法,网上的解决方法基本如下:
①图片的路径存在中文导致无法读取图片
cv2.imread()不支持中文路径,所以有中文路径并且在不打算改路径名称的情况下,应该按照以下方法读取

import numpy as np
import cv2
img=cv2.imdecode(np.fromfile(imgpath, dtype=np.uint8), cv2.IMREAD_COLOR)

②绝对路径和相对路径
这个毫无疑问需要自己反复检查和核对了,没有其他的办法哈哈哈
2)问小伙伴求解
当然在经历了百度之后我依然没有解决这个办法,于是我又去问了做相关工作的朋友,想去讨点经验
毋庸置疑,我的小伙伴也没有解决这个问题,但是他给了我另一种方法,代码如下:

from PIL import Image
import numpy as np
I = Image.open(imgpath)
I.show()
a = np.array(I)

同时他还给了我一个解释,如图所示,可能是问题的正解
2022-11-03关于cv2.imread()读取图片返回None的原因及解决办法_第1张图片
3)继续搜索正解
你所看到的图片的后缀名可能不是图片真正的格式喔,所以我开始百度如何查看图片的真正格式,方法如下:
①用画图软件打开测试的图片
2022-11-03关于cv2.imread()读取图片返回None的原因及解决办法_第2张图片
②选择另存为就可以看到图片的原始格式
2022-11-03关于cv2.imread()读取图片返回None的原因及解决办法_第3张图片
Oh,他是.gif格式的图片,所以我们用cv2.imread()读取的时候会出现返回None的情况,至此,问题解决了哈哈哈

当然,如果后续需要用这个图片,我们只需要转存一下就行,不需要的话直接删除也未尝不可哈哈哈

参考链接:
【1】链接: link
【2】链接: link

你可能感兴趣的:(深度学习,python,经验分享,opencv)