使用相对路径读图失败,OpenCV imshow断言错误求助
解决OpenCV imshow报错:(-215:Assertion failed) size.width>0 && size.height>0
我正在做车牌检测与识别项目,之前代码运行完全正常,突然失效,OpenCV无法正常工作。运行简化测试代码时出现以下错误:
Traceback (most recent call last): File "c:\Users\user-pc\Desktop\Python Project VSCode\Code\main.py", line 5, in <module> cv2.imshow("real image", image) cv2.error: OpenCV(4.5.4) D:\a\opencv-python\opencv-python\opencv\modules\highgui\src\window.cpp:1006: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'
测试用的简化代码如下:
import cv2 image = cv2.imread('T2.jpg') cv2.imshow("real image", image) cv2.waitKey(0)
已尝试的操作:
- 卸载并重装OpenCV
- 更换不同IDE(如VSCode)
排查与解决步骤
检查图片路径是否正确
cv2.imread()如果找不到文件会返回None,此时imshow就会触发这个断言错误。- 确认
T2.jpg和脚本main.py在同一目录下; - 或者使用绝对路径读取图片,比如:
image = cv2.imread(r'c:\Users\user-pc\Desktop\Python Project VSCode\Code\T2.jpg') - 可以先打印
image的值,如果输出None,说明路径有问题。
- 确认
验证图片文件是否损坏
- 尝试用系统自带的图片查看器打开
T2.jpg,确认图片能正常显示; - 换一张已知正常的图片(比如随便一张jpg/png)替换
T2.jpg,重新运行测试代码,看是否还报错。
- 尝试用系统自带的图片查看器打开
修复OpenCV窗口显示问题
有时候highgui模块的窗口后端可能出问题,可以尝试以下操作:- 在imshow前先创建窗口,并增加图片非空判断:
import cv2 cv2.namedWindow("real image", cv2.WINDOW_NORMAL) image = cv2.imread('T2.jpg') if image is not None: cv2.imshow("real image", image) cv2.waitKey(0) cv2.destroyAllWindows() else: print("无法读取图片") - 或者用matplotlib替代imshow来显示图片:
import cv2 import matplotlib.pyplot as plt image = cv2.imread('T2.jpg') if image is not None: # OpenCV读取的是BGR格式,转成RGB适配matplotlib image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) plt.imshow(image_rgb) plt.show() else: print("无法读取图片")
- 在imshow前先创建窗口,并增加图片非空判断:
检查文件权限
- 确认
T2.jpg没有被其他程序占用(比如Photoshop、画图等); - 确保脚本所在目录有读取文件的权限。
- 确认
内容的提问来源于stack exchange,提问作者Storm Slater
相关产品推荐
相关产品推荐

