ホームページ >バックエンド開発 >C++ >キャプチャ バッファの蓄積によって引き起こされる OpenCV VideoCapture の遅延を克服するにはどうすればよいですか?

キャプチャ バッファの蓄積によって引き起こされる OpenCV VideoCapture の遅延を克服するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-06 12:34:02634ブラウズ

How to Overcome Lag in OpenCV VideoCapture Caused by Capture Buffer Accumulation?

キャプチャ バッファによる OpenCV VideoCapture の遅延

OpenCV の VideoCapture で、フレームの蓄積により遅延の問題が発生しました。キャプチャバッファ。回避策として、バッファをすばやくクリアするために 30fps でバッファを読み取るという手段を講じました。

OpenCV ソリューション

OpenCV は、バッファ サイズを手動で設定する方法を提供します。 :

<code class="cpp">cv::VideoCapture cap;
cap.set(CV_CAP_PROP_BUFFERSIZE, 3); // store only 3 frames</code>

ただし、このソリューションは DC1394 v 2.x バックエンドでのみサポートされています。

ハックアラウンド 1

代替案このアプローチは、フレームの取得にかかる時間を測定することです。

  • 時間が短い場合、フレームはバッファからのものであり、破棄できます。
  • 時間が超過するまで繰り返します。バッファが空であることを示すしきい値。

ハックアラウンド 2

CV を使用して、高速でフレームを継続的に取得する 3 番目のスレッドを作成できます。 ::VideoCapture.grab() を使用してバッファを空に保ちます。スピンロックを使用して、このスレッドとワーカー スレッド間のアクセスを同期します。

以上がキャプチャ バッファの蓄積によって引き起こされる OpenCV VideoCapture の遅延を克服するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。