相关文章推荐

问题描述

使用python 3.6 openCV 4.4 时,cv2.cvtColor()报错:

1
2
3
cv2.error: OpenCV(4.4.0)
C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-jmqlme5z\opencv\modules\imgproc\src\color.cpp:182:
error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'

以及cv2.imshow()报错:

1
2
cv2.error: C:\projects\opencv-python\opencv\modules\highgui\src\window.cpp:325: 
error: (-215) size.width>0 && size.height>0 in function cv::imshow

诊断

使用cv2.imread()读取图片后,print( 读取的图片 ),观察输出结果是否为”None”。如果为”None”,说明图片根本就没读进去。需要注意的是 imread没有读到图片,也不会报错 。但是后续图片处理就会报错。

处理方法

发现了问题是由图片读取失败导致,那就好解决了。可以按照以下步骤:

  • 检查路径是否出错。需要注意以下两种情况:
    1. 路径中有中文->方案A;
    2. 路径中有“\”->方案B;
    3. 检查图片是否存在。
      1. 若不存在图片,则…;
      2. 图片名包括中文->方案A;
      3. 解决方案A:

        要注意,路径或图片名有中文时是不可以直接用imread的哦 。可以使用以下函数:

        1
        2
        3
        def cv_imread(file_path):
        cv_img = cv2.imdecode(np.fromfile(file_path,dtype=np.uint8),-1)
        return cv_img

        代码来自: https://www.zhihu.com/question/67157462/answer/251754530

        解决方案B:

        如果代码中的路径有“\”,可能会被识别为逃逸符,建议改成“\”。

  •  
    推荐文章