0

Mat CV_32FC1イメージをエンコードして、base64を使用してインターネット経由で送信しようとしています。プロセスは機能しますが、OpenCVは間違った形式でエンコードします。例:

vector<unsigned char> buffer;
vector<int> compression_params;
compression_params.push_back(CV_IMWRITE_PXM_BINARY);
compression_params.push_back(0);
cv::imencode(".pgm", desc, buffer, compression_params);
printf("%s", &buffer[0]);

これにより、次の出力が生成されます。

P2
64 15
255
0   0   0   0   1   0   0   0   0   1   0   0   0   0   0   0   1   0   0   0   0   0     0   0   0   0   
etc..

圧縮パラメーターと最初のパラメーター(P2)によると、バイナリ形式としてエンコードするのではなく、ASCIIにする必要があります。(ソース)

それ自体は問題ではありませんが、に変更compression_params.push_back(0)するcompression_params.push_back(1)と、次の出力が得られます(画像データなし)。

P5
64 15
255

iOSでOpenCV2.4.4を使用していますが、これを修正するにはどうすればよいですか、あるいはデータを失うことなくマットを適切に送信するにはどうすればよいですか?

4

1 に答える 1

2

問題が解決したかどうかはわかりませんが、私は問題を把握しました。私がよく知らない iOS バージョンを使用している場合でも、あなたのケースにも当てはまる可能性があります。

OpenCV で画像をキャプチャして pgm 形式で保存するにはどうすればよいですか?

于 2014-05-22T09:27:45.790 に答える