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.GetCapturePropertyビデオのフレーム数を取得するには、CV_CAP_PROP_FRAME_COUNTを使用する必要があります。真ん中を見つけるためにそれを2で割ります。QueryFrameこの値になるまで使用してください。

于 2013-01-05T11:50:22.787 に答える