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を使用していますが、これを修正するにはどうすればよいですか、あるいはデータを失うことなくマットを適切に送信するにはどうすればよいですか?