1

Beaglebone プラットフォームが接続されたカメラからビデオ画像をキャプチャし、それらを (インターネット ソケットを介して) Android アプリケーションに送信するアプリケーションを開発しようとしています。

openCV はカメラから画像をキャプチャするための非常に優れたオプションである可能性があることを読みましたが、ソケットを介して画像を送信する方法がわかりません。

一方で、Android アプリで受信した動画の画像は、単純な画像で処理できたのではないかと思います。これを念頭に置いて、1秒ごとに画像を更新できると思います。

私は実装に正しい方法であるかどうかわからないので、あなたが提供できる提案と助けに本当に感謝しています.

前もってありがとう、ガス。

4

2 に答える 2

0

OpenROV の人々は、あなたが言ったようなことをしました。カスタム Android アプリを使用する代わりに (確かに可能です)、彼らは単に Web ブラウザーを使用して、キャプチャーした画像を表示しました。

https://github.com/OpenROV/openrov-software

このアプリケーションは、OpenCV を使用してキャプチャと分析を実行し、Node.JS アプリケーションを使用して socket.io を介してデータを Web ブラウザーに送信し、Web クライアントを使用してビデオを表示します。これがどのように機能するかについてのアーキテクチャの説明は次のとおりです。

http://www.youtube.com/watch?v=uvnAYDxbDUo

mjpg-streamer のようなものを実行することもできます。

http://digitalcommons.calpoly.edu/cgi/viewcontent.cgi?article=1051&context=cpesp

于 2012-11-06T18:25:22.450 に答える
0

ビデオ ストリームを一連の画像として表示すると、パフォーマンスに大きな影響を与える可能性があることに注意してください。たとえば、各フレームのエンコード方法に注意しないと、2 つのシステム間のトラフィックが 2 倍以上になる可能性があります。ARGB はピクセルをエンコードするのに 32 ビット、YUV は 12 ビットかかるため、フレーム圧縮を考慮しても、フレームあたりのストレージは 2 倍になります。また、ARGB のレンダリングは、YUV のレンダリングよりもはるかに遅くなります。これは、ほとんどの Android フォンが実際にはハードウェア最適化された YUV レンダリングを備えているためです (GPU がディスプレイ メモリ内の YUV を直接ブリットできるように)。さらに、アプローチとして個別のフレームをレンダリングすると、通常、sone は簡単な方法でキャンバス上にビットマップをレンダリングします。

Beaglebone ボードにハードウェア MPEG エンコーダがある場合は、それを使用してビデオをエンコードおよびストリーミングする必要があります。これにより、レンダリングのために MPEG ストリームを標準の Android メディア プレーヤーに直接渡すことができます。もちろん、標準のメディア プレーヤーを使用しても、ビデオ ストリームをリアルタイムで処理することはできないため、シナリオによっては、これが選択肢にならない場合があります。

于 2012-11-06T18:36:01.343 に答える