我正在尝试使用python逐帧读取视频,以便在帧上执行一些处理

我正在尝试使用python逐帧读取视频,以便在帧上执行一些处理,python,opencv,Python,Opencv,这是我的密码 import cv2 video_capture = cv2.VideoCapture("test.mpeg") cv2.convertMaps while True: # get frame by frame ret, frame = video_capture.read() cv2.imwrite('pic.png',frame) cv2.imshow('Video', frame) if cv2.waitKey(1) & 0x

这是我的密码

import cv2
video_capture = cv2.VideoCapture("test.mpeg")
cv2.convertMaps

while True:
    # get frame by frame
    ret, frame = video_capture.read()
    cv2.imwrite('pic.png',frame)
    cv2.imshow('Video', frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
我得到以下错误:

None

Traceback (most recent call last):
  File "D:/Itellingence Transportation Systems/Material-lab8/home_work8.py", line 12, in <module>
    cv2.imshow('Video', frame)
error: ..\..\..\..\opencv\modules\highgui\src\window.cpp:261: error: (-215) size.width>0 && size.height>0 in function cv::imshow
无
回溯(最近一次呼叫最后一次):
文件“D:/Itellinence Transportation Systems/Material-lab8/home_work8.py”,第12行,in
cv2.imshow(“视频”,帧)
错误:..\..\..\..\opencv\modules\highgui\src\window.cpp:261:错误:(-215)函数cv::imshow中的size.width>0和size.height>0

有什么问题吗?

我相信答案很简单。当视频完成时,循环不会检测任何内容。最终,视频捕获对象在尝试读取时将返回False。您应该在循环中检查该条件,以确保顺利退出

import cv2
video_capture = cv2.VideoCapture("test.mpeg")

while True:
    # get frame by frame
    ret, frame = video_capture.read()
    if not ret:
        break
    cv2.imwrite('pic.png',frame)
    cv2.imshow('Video', frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

发生此错误时,您是否检查了保存的pic.png?我认为该错误意味着图像的宽度或高度为0。如果下面的答案解决了您的问题,请接受。否则,请评论并提供更多信息。