【发布时间】:2015-06-05 10:28:41
【问题描述】:
使用 opencv imwrite 函数我设法将 jpg 图像转换为 ppm P6 格式。
Mat image = imread(picPath);
vector<int> compression_params;
compression_params.push_back(CV_IMWRITE_PXM_BINARY);
compression_params.push_back(1);
imwrite("bez.ppm", image, compression_params);
问题是我实际上必须将 jpg 图像转换为 ppm P3 ASCII 格式。 有谁知道该怎么做? 谢谢!
编辑:
在项目中,我有以下代码检查像素的最大值:
int maxVal;
fscanf(in, "%d", &maxVal);
if (maxVal != 255)
{
printf("Input file error: Not a Netpbm color image with 256 levels\n");
exit(0);
}
当我设置参数 0 时,我得到:不是 256 级的 Netpbm 彩色图像!
当我使用 irfanview 程序进行从 jpg 到 ppm p3 的转换时。
【问题讨论】:
-
compression_params.push_back(0);也许? -
当我设置参数 0 时,我得到:不是具有 256 级 (maxVal!=255) 的 Netpbm 彩色图像。当我设置参数 1 时,我得到:不是 Netpbm ASCII 便携式位图。
-
这是一个更大项目的一部分吗?如果没有,您可以使用 ImageMagick(包含在大多数 Linux 发行版中,可用于 OSX 和 Windows)非常简单地在终端中将 JPEG 转换为 PPM (P3),就像这样
convert input.jpg -compress none output.ppm -
这是一个更大的项目代码的一部分。使用其他程序是不可能的。