解决 error: (-215:Assertion failed) _src.empty() in function ‘cv::cvtColor‘

当使用OpenCV读取图片时遇到(-215:Assertion failed)!_src.empty()错误,通常是因为图片路径含有中文或者图片在传输过程中损坏。确保图片路径不含中文,并尝试通过读取文件二进制内容再解码的方式来读取图片。如果路径无误,数据已读入,但仍然报错,可能是图片在传输过程中受损。检查cv2读入的图片是否正确以排除此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

im, im_info = decode_image(im, im_info)   File "D:\PyCharm\Deployment\deploy_water\python\preprocess.py", line 34, in decode_image im = cv2.cvtColor(im, cv2.COLOR_BGR2RGB) cv2.error: OpenCV(4.5.5) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'

解决上述error和cv2.imdecode(data, 1)=None

  相信大家也都能在各大平台找到这样错误的帖子,大多数说的是以下原因,总结:
1. 图片路径中有中文,导致cv2读入有问题,修改为全是中文的也是如此,然后有的同学写的是相对路径里面没有中文,要注意的是在相对路径里面没有,在绝对路径下同样也要没有!!!
 因为底层代码会可能给你转成绝对路径,这样就可能读者传入的是相对路径且没有中文,却被隐式转换了绝对路径,也会报上述错误。总之,图片的绝对路径里面不能有中文。

2. 针对与上面的中文路径来说,可以如下读入图片路径,使得其兼容中文路径。

  with open(im_file, 'rb') as f:
      im_read = f.read()
  data = np.frombuffer(im_read, dtype='uint8')
  im = cv2.imdecode(data, 1)  # BGR mode, but need RGB mode
  im = cv2.cvtColor(im, cv2.COLOR_BGR2RGB)

3. 作者报错,路径中没有中文出现,却也还是会报如上错误(这个出现的概率低,但还是可能会发生 )

在这里插入图片描述
                    图片路径无中文
在这里插入图片描述
                    图片读入有数据

  因为在调试代码时发现路径没问题,而且数据似乎也是正常读入,导致作者因为这个问题卡了1个半小时,是因为作者图片传输出现了问题,图片传输时被损坏。所以大家一定要先检查cv2读入的图片是否有问题才会读入不了。
在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

锦鲤AI幸运

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

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

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

打赏作者

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

抵扣说明:

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

余额充值