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 libraray播放视频文件的简单python代码。

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

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

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

4

1 回答 1

0

您必须使用cv.GetCapturePropertyCV_CAP_PROP_FRAME_COUNT 来获取视频的帧数。将其除以 2 以找到中间值。使用QueryFrame直到达到这个值。

于 2013-01-05T11:50:22.787 回答