次のシナリオを実装するのに問題があります。私の問題文は次のようになります。
- 私は3つのスレッドを持っています。カメラからフレームを取得するための ThreadCamera。フレームを処理するための ThreadProcess (取得した画像/フレームに対して OpenCV で画像処理を行う) と、画像を表示するためのメイン GUI スレッド。
- ThreadProcess が画像を処理するのにどれくらいの時間がかかるかわかりません。したがって、画像を ThreadCamera から ThreadProcess に渡し、画像に対して画像処理を行い、それをメインの GUI スレッドに渡して表示したいと考えています。
- ThreadProcess が画像を処理するとき、ThreadCamera はスリープする必要があります。つまり、カメラからさらにフレームを取得するべきではありません。ThreadProcess が画像処理タスクを終了すると、画像といくつかの情報をメインの GUI スレッドに渡す必要があります。この後、ThreadCamera のみが起動し、その (ThreadCamera) スレッドで実行されているカメラから次のフレーム/画像を取得する必要があります。
ありがとう...カメラと画像処理ジョブを単一のスレッドに入れるためのいくつかのコメントの後、私は別のポイントを知りたい..
- 処理中にカメラをスリープさせたくない場合はどうすればよいですか?CameraThread によって取得されたフレームの一部が失われても問題ありません (いずれにせよ、カメラをスリープ状態にするか、スリープ状態にしなくても失われます)。
各プロセス(カメラプロセスと画像処理ジョブ)にQObjectを使用し、特定のスレッドで実行するためにmovetoThreadコマンドを使用しています。
実装と信号/スロット設計に関する洞察は役に立ちます..