我正在使用 python 2.7 和 opencv2.4 读取 avi 文件。我使用的是 windows 10。我的示例代码是
import numpy as np
import cv2
cap = cv2.VideoCapture('videos/wa.avi')
while(cap.isOpened()):
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('frame',gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
当我运行视频时显示但程序结束时没有错误
OpenCV Error: Assertion failed (size.width>0 && size.height>0) in cv::imshow, file ..\..\..\..\opencv\modules\highgui\src\window.cpp, line 261
Traceback (most recent call last):
File "C:/Users/Emmanu/PycharmProjects/VideoEventDetection/test.py", line 11, in <module>
cv2.imshow('frame',frame)
cv2.error: ..\..\..\..\opencv\modules\highgui\src\window.cpp:261: error: (-215) size.width>0 && size.height>0 in function cv::imshow
我做错了什么?我该如何纠正?
问题出在这一行:
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
该行期望框架是 3 通道或 4 通道 Mat 对象,但它得到了一些空 Mat,这就是您断言失败的原因。
您需要检查视频中是否存在该帧,并且需要正确处理视频结束。
cap.isOpened()
只会检查视频文件是否可以打开进行读取,但到达视频文件末尾时不会返回 false。
Try this
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)