首页 > 解决方案 > OpenCV:使用 PGM 文件。为什么我生成的 PGM 文件有 3 个通道 (RGB)?

问题描述

我尝试使用 OpenCV 生成 PGM 文件,这就是我的做法:

ori = imread("images/apple.jpg");
cvtColor(ori, gray, COLOR_BGR2GRAY); //convert to gray    

vector<int> params;
params.push_back(IMWRITE_PXM_BINARY);
params.push_back(1); 

imwrite("images/apple1.pgm", gray, params); //because it needs gray input
pgm = imread("images/apple1.pgm");
imshow("PGM", pgm);

我可以成功生成 PGM 文件并使用imshow. 但是我注意到我的 PGM 文件有 3 个通道 (RGB),这是出乎意料的,因为它应该每个像素只有 1 个通道。

我将相同的文件加载到 GIMP 中并将其导出为 PGM 格式。当我也尝试在 OpenCV 上显示它时imshow,它显示了来自我的代码的 GIMP 和 PGM 的右通道(1 通道)比较如下:

在此处输入图像描述

注意每个图像的左下角,通道数。我试图用这个将它转换成单通道:

pgm.convertTo(pgm, CV_8U);

但我的 PGM 图像仍然由 3 个通道组成。任何建议我的 PGM 转换中缺少哪一部分?

标签: c++opencvimage-processingterminalubuntu-18.04

解决方案


推荐阅读