我正在尝试对 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。 (Source)
这本身不是问题,但是当我将 compression_params.push_back(0)
更改为 compression_params.push_back(1)
时,我得到了这个输出(没有图像数据):
P5
64 15
255
我在 iOS 上使用 OpenCV 2.4.4,如何解决这个问题,或者如何在不丢失数据的情况下以良好的方式发送 Mat?
最佳答案
不知道您是否已经解决了您的问题,但我发现了问题,即使您使用的是我不熟悉的 iOS 版本,它也可能适用于您的情况:
关于c++ - OpenCV imencode pgm 没有编码正确的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15337725/