OpenCV imencode PGM不编码正确的格式

我试图编码一个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。 (资源)

本身这不是一个问题,但是当我改变compression_params.push_back(0) compression_params.push_back(1)我得到这个输出(没有图像数据):

 P5 64 15 255 

我在iOS上使用OpenCV 2.4.4,我该如何解决这个问题,或者我怎样才能发送一个良好的方式,而不会丢失数据?

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

如何在OpenCV中捕捉图像并保存为pgm格式?