ある開始フレームから始めて、ビデオの途中からフレームをクエリしたい。OpenCV Seek Function/Rewindに続いて、 を使用しますCV_CAP_PROP_POS_FRAMES
。
期待どおりに動作することを確認するために、フレーム 10 を探して、画像からスライスを印刷します。次に、フレーム 10 を再び探して、同じスライスを印刷します。
In [1]: import cv
In [2]: capture = cv.CaptureFromFile('T35V1.MOV')
In [3]: cv.SetCaptureProperty(capture, cv.CV_CAP_PROP_POS_FRAMES, 10)
Out[3]: 1
In [4]: np.asarray(cv.GetMat(cv.QueryFrame(capture)))[100] # an arbitrary slice
Out[4]:
array([[ 36, 104, 120],
[ 36, 104, 120],
[ 36, 107, 123],
...,
[ 50, 114, 136],
[ 54, 115, 136],
[ 55, 116, 137]], dtype=uint8)
In [5]: cv.SetCaptureProperty(capture, cv.CV_CAP_PROP_POS_FRAMES, 10)
Out[5]: 1
In [6]: np.asarray(cv.GetMat(cv.QueryFrame(capture)))[100]
Out[6]:
array([[ 32, 107, 119],
[ 32, 107, 119],
[ 35, 109, 124],
...,
[ 42, 114, 135],
[ 47, 118, 139],
[ 50, 121, 142]], dtype=uint8)
データは一致しません。私はこれを悪用していますか?
関連: http://code.opencv.org/issues/481
C++ で OpenCV を使用しているこのユーザーは、プロパティの設定と取得を 2 回行うことでこの問題を回避できることを発見しました。私にとって、cv
またはを使用するかどうかにかかわらcv2
ず、問題は解決しません。