我正在尝试对 Mat CV_32FC1 图像进行编码以使用 base64 通过 Internet 发送,该过程有效,但 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 上使用 OpenCV 2.4.4,我该如何解决这个问题,或者如何在不丢失数据的情况下以好的方式发送 Mat?