QueryFrame是如何工作的?

3
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)

上面是一个使用opencv库播放视频文件的简单python代码。
我唯一不理解的部分是 im = cv.QueryFrame(invideo) 根据opencv api,"QueryFrame从相机或视频文件中获取一帧,对其进行解压缩并返回。"
据我的理解,它只返回一个单帧的iplimage格式的图像,但是它如何知道要返回哪个帧? QueryFrame只需要视频捕获这一个参数,但没有索引告诉它我需要检索哪些帧。如果我需要从视频的中间部分开始播放呢?
1个回答

0

您需要使用cv.GetCaptureProperty和CV_CAP_PROP_FRAME_COUNT来获取视频的帧数。 将其除以2以找到中间位置。 使用QueryFrame直到达到此值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接