0

我正在尝试对 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?

4

1 回答 1

2

不知道您是否解决了问题,但我发现了问题,即使您使用的是我不熟悉的 iOS 版本,它也可能适用于您的情况:

如何在 OpenCV 中捕获图像并以 pgm 格式保存?

于 2014-05-22T09:27:45.790 回答