QueryFrame如何工作?

时间:2012-09-28 07:00:05

标签: python opencv

import cv

# create a window
winname = "myWindow"
win = cv.NamedWindow(winname, cv.CV_WINDOW_AUTOSIZE)

# load video file
invideo = cv.CaptureFromFile("video.avi")

# interval between frame in ms.
fps = cv.GetCaptureProperty(invid, cv.CV_CAP_PROP_FPS)
interval = int(1000.0 / fps)   

# play video
while (True):
    im = cv.QueryFrame(invideo)
    cv.ShowImage(winname, im)
    if cv.WaitKey(interval) == 27: # ASCII 27 is the ESC key
        break

del invideo
cv.DestroyWindow(winname)

上面是一个简单的python代码,使用opencv libraray来播放视频文件。

我唯一不理解的部分是im = cv.QueryFrame(invideo)

根据 opencv api ,“QueryFrame从相机或视频文件中抓取一个帧,对其进行解压缩并返回。”

根据我的理解,它只会为iplimage格式返回一个单帧的图像,但是它如何知道它返回哪个帧?唯一需要的参数QueryFrame是视频捕获,但没有索引告诉它我需要检索哪些帧数量的视频帧。如果我需要从中间部分播放视频怎么办?

1 个答案:

答案 0 :(得分:0)

您必须使用cv.GetCaptureProperty和CV_CAP_PROP_FRAME_COUNT来获取视频的帧数。 除以2找到中间。 使用QueryFrame,直到达到此值。