ホームページ >バックエンド開発 >C++ >OpenCV VideoCapture が遅いのはなぜですか?どうすれば修正できますか?

OpenCV VideoCapture が遅いのはなぜですか?どうすれば修正できますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-05 17:40:02867ブラウズ

Why is My OpenCV VideoCapture Lagging, and How Can I Fix It?

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

Web カメラを介したビデオのキャプチャには、キャプチャ バッファによる遅延が発生する可能性があります。フレームは読み取られる前に保存されます。この問題は、フレームの読み取り速度がフレームのキャプチャ速度よりも遅い場合に発生し、バッファー内にフレームが蓄積されます。

OpenCV ソリューション

OpenCV では、CV_CAP_PROP_BUFFERSIZE を使用して VideoCapture オブジェクトのバッファ サイズを設定できます:
<code class="cpp">cv::VideoCapture cap;
cap.set(CV_CAP_PROP_BUFFERSIZE, 3); // Store only 3 frames in the buffer</code>

Hackaround 1

OpenCV ソリューションがそうでない場合うまくいかない場合は、次のハックアラウンドを使用できます:
  1. バッファからフレームをクエリするのにかかる時間を測定します。
  2. 時間が短い場合は、フレームをそのまま破棄します。バッファから読み取ります。
  3. 時間が制限を超えるまでフレームのクエリを続けます。これは、バッファが空で次のフレームが最新であることを示します。

ハックアラウンド2

もう 1 つのハックアラウンドには、3 番目のスレッドを使用して高速で連続的にフレームを取得し、バッファを空に保つことが含まれます。
  1. cv:: を呼び出す 3 番目のスレッドを作成します。 VideoCapture.grab() を使用してフレームをフェッチします。
  2. スピン ロックを使用して、ワーカー スレッドと 3 番目のスレッドの間でフレームの読み取りを同期します。

以上がOpenCV VideoCapture が遅いのはなぜですか?どうすれば修正できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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