使用CImg对单通道进行复杂修改

时间:2015-09-22 18:51:40

标签: c++ image-processing cimg

使用CImg图像处理库,我试图实现一些相当微不足道的事情。我想对HSI图像的强度通道进行一些复杂的修改(包括中间步骤和复制)。目前我的方法是分离强度通道并对其进行处理。但是,最后我会以某种方式将结果反馈回原始图像 - 而且我不知道如何实现这一目标。

正如您在下面的代码示例中所看到的,我尝试将修改后的强度结果转换回单个通道unsigned char CImg intensity_result,并将其简单地分配给原始图像的强度通道。但是当我尝试显示结果时,程序崩溃说:

  

... CImg :: HSItoRGB():实例不是HSI图像。

CImg<unsigned char> image = CImg<>("pic_small.jpg").normalize(0,255);
CImg<> HSIimage = image.get_RGBtoHSI();
CImg<> intensity = HSIimage.get_channel(2);

// ... intensity_modified = .... (intensity)

CImg<unsigned char> intensity_result = intensity_modified.get_normalize(0,255);
HSIimage.channel(2) = intensity_result;
HSIimage.get_HSItoRGB().display();

1 个答案:

答案 0 :(得分:1)

使用CImg<T>::draw_image()将图像绘制到另一个图像的(部分)中:

CImg<> HSI, I;  // Assuming these are already filled images.
HSI.draw_image(0,0,0,2,I); // Put content of I into HSI (at channel #2).
相关问题