コンテンツにスキップ

Top

OpenCV の VideoCapture read がなんか古い

OpenCV で USBカメラをつなげて VideoCapture で read したところ、なぜか2フレームぐらい古いフレームが取得されてしまう。

結果、遅延した感じに見える。

なんで?困る〜。と思ってたらバッファされてるからとのこと。

CAP_PROP_BUFFERSIZE で バッファ数を指定できるのでそれで1を指定したら遅延しなくなった!(0は指定できない)

Pythonだと以下のような感じ。

1
2
3
cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_BUFFERSIZE, 1)
_, frame = cap.read()

デフォルトは 3 みたいだから、2つ前のフレームが取得されたようだ。
1にしとけば毎回最新のが取れるみたい。やったね!

以上!