Python错误集锦:VideoCapture从视频文件读取并显示时报错error: (-215:Assertion failed) size.width>0 && size.height>0 in function ‘cv::imshow’

原文链接:http://www.juzicode.com/archives/5654

错误提示:

VideoCapture从视频文件读取并显示时报错error: (-215:Assertion failed) size.width>0 && size.height>0 in function ‘cv::imshow’

import cv2
print('VX公众号: 桔子code / juzicode.com')
print('cv2.__version__:',cv2.__version__)
cap = cv2.VideoCapture('..\\vtest.avi')
while cap.isOpened():
    ret, img = cap.read()
    cv2.imshow('vedio', img)  
    key = cv2.waitKey(20) 
    
cv2.destroyAllWindows()
cap.release()
==========运行结果:
VX公众号: 桔子code / juzicode.com
cv2.__version__: 4.5.2
---------------------------------------------------------------------------
error                                     Traceback (most recent call last)
<ipython-input-2-93a5285e82d1> in <module>
      5 while cap.isOpened():
      6     ret, img = cap.read()
----> 7     cv2.imshow('vedio', img)
      8     #检查按键
      9     key = cv2.waitKey(20)

error: OpenCV(4.5.2) C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-kuwfz3h3\opencv\modules\highgui\src\window.cpp:404: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'

 

 

错误原因:

1、视频文件读取后使用imshow显示前需要判断文件是否读完,如果已经读完最后一帧,再继续读时获取的是None,所以提示imshow错误。

 

解决方法:

1、在read()方法读取后先判断返回的结果是否为True,再使用imshow显示。

import cv2
print('VX公众号: 桔子code / juzicode.com')
print('cv2.__version__:',cv2.__version__)
cap = cv2.VideoCapture('..\\vtest.avi')
while cap.isOpened():
    ret, img = cap.read()
    if ret is not True:
        print("读取完成,退出")
        break     
    cv2.imshow('vedio', img)  
    key = cv2.waitKey(20) 
    
cv2.destroyAllWindows()
cap.release()
==========运行结果:
VX公众号: 桔子code / juzicode.com 
cv2.__version__: 4.5.2 
读取完成,退出

 

扩展内容:

  1. OpenCV-Python教程:读取图像、显示、写入图像
  2. OpenCV-Python教程:视频文件或相机获取图像、写视频文件

 


 

如果本文还没有完全解决你的疑惑,你也可以在微信公众号“桔子code”后台给我留言,欢迎一起探讨交流。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注