出现 error: (-215:Assertion failed) size.width>0 && size.height>0 in function ‘cv::imshow‘ 的解决方法

目录

  • 1. 问题所示
  • 2. 原理分析
  • 3. 解决方法

1. 问题所示

读取图片的时候出现如下错误:

[ WARN:[email protected]] global D:\a\opencv-python\opencv-python\opencv\modules\imgcodecs\src\loadsave.cpp (239) cv::findDecoder imread_('D:\test_code\python\text.jpg'): can't open/read file: check file path/integrity
Traceback (most recent call last):
  File "D:\test_code\python\main.py", line 7, in 
    cv2.imshow('image', img)
cv2.error: OpenCV(4.6.0) D:\a\opencv-python\opencv-python\opencv\modules\highgui\src\window.cpp:967: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'

截图如下所示:
出现 error: (-215:Assertion failed) size.width>0 && size.height>0 in function ‘cv::imshow‘ 的解决方法_第1张图片

2. 原理分析

出现报错,查看具体的报错原因: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'

尺寸都是0(前提是图片正确),说明没有读取到有效图片

根本原因是路径不正确,还有一个隐藏问题是 有中文路径

3. 解决方法

既然路径要正确,使用os库,查看是否为正确路径以及获取当前路径:

print(os.path.exists("D:\\test_code\\python\\test.jpg"))
print(os.getcwd())

在这里插入图片描述

获取到正确路径之后,再查看是否有隐藏问题(中文显示)

查看是否有中文路径
具体如下:(这样会显示错误,因为包括了中文)
出现 error: (-215:Assertion failed) size.width>0 && size.height>0 in function ‘cv::imshow‘ 的解决方法_第2张图片

同样也是有解决方法,将其更改为英文目录
或者在代码模块中对应转换:img = cv2.imdecode(np.fromfile(img, dtype=np.uint8), 1) (这个代码 我试了下我行不通 = - =)

所以我通过更改英文目录

补充知识

对应路径的引入有以下几种方法

img=cv2.imread("test.jpg",0)  # 确保是同一个子目录

# 以下都是绝对路径
img=cv2.imread("D:\\test_code\\python\\test.jpg",0)
img=cv2.imread("D:/test_code/python/test.jpg",0)
img=cv2.imread("D://test_code//python//test.jpg",0)

完整截图如下:

出现 error: (-215:Assertion failed) size.width>0 && size.height>0 in function ‘cv::imshow‘ 的解决方法_第3张图片

你可能感兴趣的:(BUG,opencv,计算机视觉,python)