OpenCV/Python:VideoCapture无法正确读取最后一帧

2024-06-25 22:43:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是openCv和python2.7。在

我想看一段视频,但最后一帧没有类型,无法显示。在

我的视频有16帧,帧速率是4fps。在

打印我得到的帧类型:

<type 'numpy.ndarray'>
<type 'numpy.ndarray'>
<type 'numpy.ndarray'>
...
<type 'numpy.ndarray'>
<type 'NoneType'>
OpenCV Error: Assertion failed (size.width>0 && size.height>0) in cv::imshow, fi
le C:\builds\master_PackSlaveAddon-win64-vc12-static\opencv\modules\highgui\src\
window.cpp, line 271
Traceback (most recent call last):
  File "3_1.py", line 113, in <module>
    cv2.imshow('frame',frame)
cv2.error: C:\builds\master_PackSlaveAddon-win64-vc12-static\opencv\modules\high
gui\src\window.cpp:271: error: (-215) size.width>0 && size.height>0 in function
cv::imshow

我的代码是:

^{pr2}$

Tags: innumpymaster类型size视频typewidth
1条回答
网友
1楼 · 发布于 2024-06-25 22:43:56

谢谢@DanMašek。在

问题是,我没有测试ret以查看读取成功的位置。所以文件是打开的,但是没有新的帧来读取,结果我得到了NoneType Error。在

因此,我最后的正确代码是:

cap_2 = cv2.VideoCapture('video.avi')
while(cap_2.isOpened()):
    ret, frame = cap_2.read()

    if ret == true:
        print type(frame)
        cv2.imshow('frame',frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):
             break

cap_2.release()
cv2.destroyAllWindows()

相关问题 更多 >