c++ - 使用 CImg 对单 channel 进行复杂修改

标签 c++ image-processing cimg

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

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

... CImg::HSItoRGB(): Instance is not a HSI image.

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();

最佳答案

使用 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).

关于c++ - 使用 CImg 对单 channel 进行复杂修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32724675/

相关文章:

c++ - 错误 LNK2019 : unresolved external symbol "extern "C"what is this error?

c++ - 将字符串解析为 C++ 中的一行代码

c++ - Visual Studio 包含错误

C++ - 采用指针但接收 int 的方法

image - 使用graphicsmagick或imagemagick调整图像大小,使其周围没有空白

c++ - 如何使用 CImg 显示少量图像(每个图像在单独的窗口中)?

c++ - 如何访问第三方源文件中的函数?

c++ - 循环和 strcpy

matlab - 如何填充matlab函数 "scatter"生成的图像内的空白区域