Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 隔行扫描视频的OpenCV帧计数错误,解决方法?_Python_Opencv_Video_Frame Rate - Fatal编程技术网

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,它有相同的问题。