我正在尝试创建一个应用程序,其中 OpenCV 中的 Mat 图像使用cv::imencode
base64 字符串进行编码。为此,我必须将 a 转换vector<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上次工作。