c++ - OpenCV imencode pgm 没有编码正确的格式

标签 c++ ios opencv image-formats

我正在尝试对 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 版本,它也可能适用于您的情况:

How do I capture images in OpenCV and saving in pgm format?

关于c++ - OpenCV imencode pgm 没有编码正确的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15337725/

相关文章:

c++ - Visual Studio 2012 C++ 控制台应用程序立即退出

ios - 创建带有动态单元格的tableView并以编程方式设计的方法

ios - 我可以从多个线程绘制到同一个 CGContextRef 吗?

ios - addTarget parentViewController 和 xcode 警告我,我的选择器未声明

opencv - 如何在 opencv 中对词袋使用 SIFT 特征?

c++ - 移动字符数组的值以注册 x86 内联汇编

C++ 和结构(多重继承)

c++ - OpenCV积分图像像素访问错误

opencv - 便签的对象检测

c++ - 计算一个巨大的c++程序的运行时间