OpenCVによる、UDP・非同期通信によるUSBカメラデータの送受信 – プログラミング – Home

OpenCVによる、UDP・非同期通信...
 
通知
すべてクリア

OpenCVによる、UDP・非同期通信によるUSBカメラデータの送受信


温泉マーク
 温泉マーク
(@温泉マーク)
ゲスト
結合: 14年前
投稿: 1
Topic starter  

 お世話になります。Winsockを使用し、UDP・非同期通信によるUSBカメラデータの
送受信テストを行っています。
ネットワークのトラブルはないと思うのですが、送信されてきたデータが受信側で正しく
表示できません。宜しくご教示願います。以下に送受信の簡単な説明を記します。

☆ 送信側の手順(ソケットの生成、非同期通信の設定など、ネットワークの設定は
準備済とします)
1 送信側、OpenCVの画像データを管理しているIplImage構造体を準備する。
2 USB カメラから撮影したデータの1フレームをキャプチャーする。
3 手順2で取得したデータが大きすぎるとき、udpプロトコルで送信できる、最大サ
イズに分割する。
4 sendto 関数でIplImage構造体の中の、IplImage->imageSize(画像データサイ
ズ)と、
IplImage->imageData(画像データ)を手順3で述べた、サイズに分割して送信する。

☆ 受信側の手順(送信側と同様にソケットの生成、bind(ソケットとポートの結
合)などは、準備済とします)
1 送信側、で指定したサイズと同じサイズのIplImage構造体を準備する。
2 while(1) の無限ループ内で、fdsに設定されたソケットが読み込み可能になるま
で待つ。
3 手順2で、準備したソケットに、読み込み可能データがある場合、recvfrom 関数
を使用し
受信バッファー(char buf[UDPの送・受信で扱える最大サイズ])に送信データを受信す
る。
4 手順3 のデータ(IplImage->imageSize、IplImage->imageData)を手順1で作っ
た構造体に収める。

5 OpenCVの、cvShowImage関数(指定したウィンドウ内に画像を表示する関数)を
使用し
手順1のデータを表示させる。

結果
動画表示されない。
ネットワークエラーはなし。

補足
当該プログラムを作成する前に、同じ通信方式・同じプロトコルを用い、
テキストの文字列を連続送受信する、プログラムを作りました。
結果は、受信側で送信されてきた文字列が表示できています。

環境
OpenCV2.0
Visual Studio 2010 Professional Edition (Win32 Project)


引用解決済
トピックタグ
浩二
 浩二
(@浩二)
ゲスト
結合: 16年前
投稿: 19
 

どこまでできているのかわからず上記情報では
みなさん答えにくいと思います。

キャプチャできたのかどうか、
データが受信できたのかどうか、
随時ダンプするなりして確認するしかないでしょうか。
OpenCVに正しいデータが渡っているのであれば
ここで出す話題ではないかもしれません。
Wireshark というソフトもお勧めです。


返信引用
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

UDPでは
1.データは正しく受信できない可能性がある。
2.データは送信された順番通りに受信できない可能性がある。
3.両者ともネットワークのエラーなしに発生する。
ので、それでも動き続けるアプリとして設計されなければなりません。
一般的には数百Byte程度をやり取りするのが精一杯といったものです。
つまり、大きなサイズの一連のデータをやりとりする手段としては
まったく向きではありません。TCP/IPに変更しましょう。


返信引用
fukushima
 fukushima
(@fukushima)
ゲスト
結合: 14年前
投稿: 1
 

通信状況を見てみてください.
UDPでたとえパケットが落ちたとしても非圧縮データなら何らかの像が写るはずです.何も
写らないのであれば,通信がまったく行われてない可能性が高いです.
あとUDPは,仲澤@失業者がいうとおり,送ったものが届く保証も送った順番に届く保証も
ありません.ですが,最速のプロトコルです.適切に使えば通信出来るはずです.

あとネットワークの中の機器では,あまり大きなパケットが通過するのを許可していないも
のもあります.パケットサイズを小さくしてみてはどうでしょうか?


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました