2016-08-05 8 views
-1

私は単純なvideo-over-ipプログラムに取り組んでいます。これは一部はプロジェクトで使用するためのものでしたが、一部はハイレベルなインターフェイスを使ったネットワークの基本を教えています。問題は、ネットワーク上のcv::Matからデータを送信することができますが、データをデコードしようとすると、色データの大部分が欠落しているように見えます。このコードはgistにあり、Linuxでプロジェクトをビルドして実行するために必要なすべてのファイルが含まれています。誰でもこの光を照らすことができますか?OpenCV Mat corrupt

さらに詳しい情報が必要な場合は、お知らせください。あなたはテストするためにウェブカメラが必要になるでしょう、私は恐れています。

答えて

1

memcpy(m.data(), frame.data, frame.rows * frame.cols);でデータをコピーすると、画像が3チャンネルなので、合計データの3分の1しかコピーされません。

memcpy(m.data(), frame.data, 3 * frame.rows * frame.cols);に変更してください(前に十分なスペースを確保してください)。

+0

ありがとうございます!これで問題は解決しました。確かに、カラーデータはクライアントに部分的にしかコピーされませんでした。私はあなたの変更だけで動作するようにしましたが、色は表示されましたが、歪んでいました。クライアントの 'Mat'コンストラクタから' vmetadata.cvstep'を削除すると、正しい画像が表示されました。 – PyroAVR