Я пытался сгенерировать файл PGM с помощью OpenCV, вот как я это делаю:
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
, он отобразил сравнение правого канала (1 канал) из GIMP и PGM из моего кода ниже:
Обратите внимание в левом нижнем углу каждого изображения, номер канала. Я попытался преобразовать его в один канал с помощью этого:
pgm.convertTo(pgm, CV_8U);
Но мое изображение PGM по-прежнему состоит из 3 каналов. Любой совет, какую часть мне не хватает в моем преобразовании PGM?