1

OpenCVで画像処理するために、USBを介してRaspberry Jessieに接続したSJ4000カメラを使用して、画像処理を検討しています。私はウェブカメラを使ってかなりの成果を上げましたが、今ではSJ4000の環境に移植する必要がありますが、この障害に悩まされています。画像処理用のSJ4000 + OpenCV + Raspberry Pi

私が使用したコードは、この質問に対する回答と同じです:rotated face detection

私のラップトップのウェブカメラでは、かなり良いフレームレートが得られます。 SJ4000がUSB経由でノートパソコンに接続されると、良いフレームレートが得られます。しかし、Raspberry Piでは、同じコードを実行すると、何らかの理由でイメージがちょうど凍ってしまいます。私はそれが単に凍っているので、表示するビデオビューアウィンドウを強制的に終了する必要があります。

編集1:Spyder IDEを閉じてもう一度数回ロードした後、同じコードを実行すると、フィードが表示されますが、フレームレートは非常に低く(1フレームあたり2〜3秒)、それはしばらくしてから凍りつくでしょう。

EDIT 2:私は、顔検出コードを含めると、TEN秒遅れがあるため、フィードが表示されるまでに時間がかかります。フィードを処理せずに転送すると、非常に反応します。

この問題を回避するにはどうすればよいですか?よりパワフルなプロセッサを得る唯一の方法はありますか?

ありがとうございました!

+0

最初にビデオフィードを処理せずに.... btwどの解像度の色深度/エンコードとビットレートを使用する必要がありますか?私はラズベリーパイを使用しないが、私の賭けはUSB帯域幅がCPUによって制限されている(DMAなし)。フィードがうまくいけば、どれくらいの計算能力が残っているか見積もることができます。そうしないと大きなボトルネックが発生し、大幅な減速や凍結が発生します。だからあなたがいくつかのfpsを持っているなら、 'T = 1/fps'があなたのタイムスロットです。あなたが実際にCPUからどれくらいの時間を要するかを測定します。もし10%であれば 'T'の90%以下を得て、それに収まる必要があります。 – Spektre

+0

あなたが悪い解像度/エンコーディングを選んだ場合、それは95%カメラから画像を取得するだけで...内部帯域幅にも適合しなければならない – Spektre

+0

@Spektre - 処理せずに試してみたところ、フィードは非常にスムーズです。 1秒間に処理するフレーム数を制限する方法はありますか? –

答えて

0

他の人の話によると、顔検出は、HOG/Haar記述子を使用すると非常に計算的に高価です。あなたはラズベリーパイでリアルタイムの顔検出を行うことができません。私のラズベリーパイ3では、約5fpsで300x300の画像で人体検知ができます。

私が推奨すること:動き検出を行う。動きが検出されると、顔検出を開始します。

さらに最適化は、独自のスレッドで顔検出を実行し、フレーム内で動きが検出された場合、動き検出が顔検出器によって分析されるフレームのFIFOを供給させるようにすることができます。そうすれば、顔検出器は非同期で動作し、ビデオフレームをキャプチャするメインスレッドを保持せず、動き検出を行うことができます。

関連する問題