Python 隔行扫描视频的OpenCV帧计数错误,解决方法?
使用来自的代码示例时,我注意到,如果程序运行到视频的末尾,它会花费大量时间退出。我想在最后一帧快速退出,我验证了如果我不在视频结束后播放会快得多,但有些细节对我来说没有意义。这是我的密码:Python 隔行扫描视频的OpenCV帧计数错误,解决方法?,python,opencv,video,frame-rate,Python,Opencv,Video,Frame Rate,使用来自的代码示例时,我注意到,如果程序运行到视频的末尾,它会花费大量时间退出。我想在最后一帧快速退出,我验证了如果我不在视频结束后播放会快得多,但有些细节对我来说没有意义。这是我的密码: import cv2 # create a window winname = "myWindow" win = cv2.namedWindow(winname, cv2.CV_WINDOW_AUTOSIZE) # load video file invideo = cv2.VideoCapture("vi
import cv2
# create a window
winname = "myWindow"
win = cv2.namedWindow(winname, cv2.CV_WINDOW_AUTOSIZE)
# load video file
invideo = cv2.VideoCapture("video.mts")
frames = invideo.get(cv2.cv.CV_CAP_PROP_FRAME_COUNT)
print "frame count:", frames
# interval between frame in ms.
fps = invideo.get(cv2.cv.CV_CAP_PROP_FPS)
interval = int(1000.0 / fps)
# play video
while invideo.get(cv2.cv.CV_CAP_PROP_POS_FRAMES) < frames:
print "Showing frame number:", invideo.get(cv2.cv.CV_CAP_PROP_POS_FRAMES)
(ret, im) = invideo.read()
if not ret:
break
cv2.imshow(winname, im)
if cv2.waitKey(interval) == 27: # ASCII 27 is the ESC key
break
del invideo
cv2.destroyWindow(winname)
导入cv2
#创建一个窗口
winname=“myWindow”
win=cv2.namedWindow(winname,cv2.CV\u窗口\u自动调整大小)
#加载视频文件
invideo=cv2.VideoCapture(“video.mts”)
frames=invideo.get(cv2.cv.cv\u CAP\u PROP\u FRAME\u COUNT)
打印“帧计数:”,帧
#帧之间的间隔(毫秒)。
fps=invideo.get(cv2.cv.cv\u CAP\u PROP\u fps)
间隔=整数(1000.0/fps)
#播放视频
而invideo.get(cv2.cv.cv\u CAP\u PROP\u POS\u FRAMES)
唯一的问题是返回的帧数是744,而最后播放的帧数是371(从0开始计数,所以是372帧)。我假设这是因为视频是隔行的,我想我需要解释一下,并将间隔
除以2,将帧
除以2。但问题是,我怎样才能知道我需要这样做?似乎没有一个属性可以检查:
重写为使用cv2,它有相同的问题。重写为使用cv2,它有相同的问题。