cv::imencode
OpenCV の Mat イメージがbase64 文字列を使用してエンコードされるアプリケーションを作成しようとしています。このために、 avector<unsigned char>
を a に変換する必要がありconst unsigned char*
ます。
これどうやってするの?
vector<unsigned char> buffer;
vector<int> compression_params;
compression_params.push_back(CV_IMWRITE_PXM_BINARY);
compression_params.push_back(0);
if(!cv::imencode(".ppm", desc, buffer, compression_params)){
printf("Image encoding failed");
}
// This generates a error
string output = base64_encode(buffer.data(), buffer.size());
printf("Output: %s", output.c_str());
これは私が得るエラーです:EXC_BAD_ACCESS (code=1, address=0x2ffd7000)
アップデート
これでエラーは発生しなくなりましたが、変換のどこかで問題が発生しました。出力は、デコードした後の入力と同じではなく、ほとんどが A 文字で構成されています。これは現在のスクリプトです。
vector<unsigned char> buffer;
vector<int> compression_params;
compression_params.push_back(CV_IMWRITE_PXM_BINARY);
compression_params.push_back(1);
if(!cv::imencode(".pgm", desc, buffer, compression_params)){
printf("Image encoding failed");
}
string output = base64_encode(buffer.data(), buffer.size());
printf("Output: %s", output.c_str());
vector から const unsigned char への変換が結果をめちゃくちゃにするので、これは別の質問であるべきではないと思います。前回はbase64_encodeが機能しました。