Одноканальные изображения в CImg - PullRequest
1 голос
/ 18 января 2010

Я использую CImg для работы с изображениями. В настоящее время я работаю только с изображениями в оттенках серого JPG, BMP, TIFF. проблема, с которой я сталкиваюсь с функцией CImg, заключается в следующем:

CImg сохраняет значения пикселей следующим образом. R1R2R3R4 ............ G1G2G3G4 ......... B1B2B3B4 .........

Даже для полутоновых изображений 3 разных канала создаются отдельно. Это делает мою работу очень сложной. Просто для копирования значений из одного изображения в другое, мне нужно скопировать все компоненты пикселей. Мне нужно перебрать все каналы, которые замедляют мой алгоритм.

Поскольку я работаю только с полутоновыми изображениями, для меня не имеет значения, одноканальное или многоканальное. Есть ли способ преобразования трехканального изображения в одноканальное в CImg. Пожалуйста, дайте мне знать как можно скорее.

Спасибо всем заранее

Ответы [ 2 ]

1 голос
/ 16 января 2011

Используйте функцию CImg::channel(int c):

CImg<float> img("input.jpg"); //3 channel
img.channel(0); //now single channel
img.save("output.jpg"); //will save as a 3 channel image again

http://cimg.sourceforge.net/reference/structcimg__library_1_1CImg.html#a83af84298188d07c59c49dd0ed4d2714

0 голосов
/ 21 августа 2017

Если вас интересуют только одноканальные изображения, вы также можете сохранить их как одноканальные PGM изображения, которые CImg могут читать и записывать напрямую, без необходимости в дополнительных библиотеках:

#include "CImg.h"
using namespace cimg_library;
int main() {
   // Load colour image
   CImg<unsigned char> image("image.png");

   // Extract Red channel, which is same as Green and Blue in greyscale
   image.channel(0);

   // ALTERNATIVE TO PREVIOUS LINE IS TO USE LUMINANCE
   // image.RGBtoYCbCr().channel(0);

   // Save as single channel PGM file
   image.save_pnm("result.pgm");
}

Позже вы можете преобразовать файл PGM ( описание Википедии о PGM ) в JPEG, или PNG, или TIFF с ImageMagick :

convert result.pgm image.jpg
convert result.pgm image.png

Ключевые слова : обработка изображений, обработка изображений, C ++, библиотека, CImg, NetPBM, PBMplus, PBM, PGM, PPM, PAM, оттенки серого, оттенки серого, один канал

...