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)

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

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

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

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LJhaha

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值