質問: pythonプログラムで、webカメラで映像を撮りながらopencvのdense opticalflowを計算するという処理をカメラのfpsを15に保ったまま行いたいのですが、カメラから画像を2つ取得、その後opticalflowを計算、という逐次処理だとfpsがカメラのfpsが15より低くなってしまいます。 そこで、webカメラから映像を取得する計算とopencvのdense opticalflowの計算を並列で行いたいと考えています。 このような場合がどのような設計にすれば良いのでしょうか? 教えてくださると助かります。
回答: 逐次処理の場合に、どの処理にどれだけの時間がかかっているか測定するところから始めると良いと思います。 その上で処理のパイプライン化で目標のfpsを達成できそうでしたら中心にキューを据えてワーカーで並列化となりますし、もしもパイプライン化でどうにもならなさそうだったら処理自体をどうにか高速化するかコンピューティングリソースを追加投入しなければなりません。 並列化にもオーバーヘッドという問題があるので、適切に問題を解決するためにもまず現状の把握を提案しました。