【问题标题】:Convert jpg image in ppm P3 ASCII format using Opencv使用 Opencv 将 jpg 图像转换为 ppm P3 ASCII 格式
【发布时间】: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
  • 这是一个更大的项目代码的一部分。使用其他程序是不可能的。

标签: c++ opencv jpeg ppm


【解决方案1】:

涉及的代码在OpenCV源代码树的modules/imgcodecs/src/grfmt_pxm.cpp文件中。

它根据压缩参数这样设置内部标志isBinary

for( size_t i = 0; i < params.size(); i += 2 )
   if( params[i] == CV_IMWRITE_PXM_BINARY )
      isBinary = params[i+1] != 0;

所以,如果你想要 ASCII (P3) 你需要有

compression_params.push_back(0)

并且图像类型为 CV_8UC1、CV_8UC3 或 CV_16UC1。

【讨论】:

  • 在项目中,我有以下代码:int maxVal; fscanf(in, "%d", &amp;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 的转换时。
  • irfanview 图片开头:P3 # Created by IrfanView 2560 1920 255 142 126 113 ... openCV 图片开头:P3 2560 1920 255 142 126 113 ...
  • 你现在让我很困惑 :-( 很难阅读 cmets 区域中的代码 - 最好在你的问题下方单击 edit 并更新它,以便所有信息的格式都清晰且合二为一地方。我不明白你为什么要写fscanf(),这是一个读,而你的问题是写。
  • 你的输入图确定是8位BGR图吗?
  • 输入图像:2560x1920 RGB 图像,位深 = 24
猜你喜欢
  • 2022-11-30
  • 2018-07-08
  • 1970-01-01
  • 2019-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 2017-08-31
相关资源
最近更新 更多