0

私は、opencv ライブラリによって提供されるクラス org.opencv.android.JavaCameraView を使用してビデオ ストリームを開き、そこからフレームをキャプチャして、画面に表示される前に処理する Android アプリケーションを開発しています。

アプリケーションは次のように構成されています。

  1. フレームを取得してスレッド A に送信する OnCameraFrame メソッドを持つメイン スレッド。このメソッドは、最終フレームを画面に表示する役割も果たします。したがって、すべての処理は、フレームが取得された後、画面に表示される前に、このメソッドの「途中」で実行する必要があります。

  2. 取得したフレームをバッファ、BlockingLinkedQueue に保存するスレッド A。

  3. バッファからフレームを取得し、それを処理を担当するスレッドであるスレッド C に送信するスレッド B。

  4. フレームを処理し、それをメインスレッドに送信するスレッド C。

問題は、OnCameraFrame メソッドをブロックして、最後のスレッド (C) から返されるまで画面にフレームを表示できないようにするにはどうすればよいかということです。このタイプのものを何も実装しないと、処理に少し時間がかかるため、最終フレームが画面に正しく表示されません。

私の問題を明確に説明できたことを願っています。

4

2 に答える 2