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

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读入的图片是否有问题才会读入不了。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_37700257/article/details/124756543