Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用OpenCV更改图像的颜色_C++_Opencv - Fatal编程技术网

C++ 使用OpenCV更改图像的颜色

C++ 使用OpenCV更改图像的颜色,c++,opencv,C++,Opencv,我是OpenCV的初学者,我已经使用ColorMap函数更改了图像的颜色,我还学习了如何使用查找表制作自己的自定义ColorMap。 我的问题是我有一个调色板,我用鼠标点击调色板并从中选择任何颜色。我想用我选择的颜色更改图像的颜色。有人能告诉我怎么做吗?如果有人需要下面自定义颜色贴图注释的代码,我会提供代码。提前感谢。ColorMap仅使用一种颜色不会更改图像的颜色。它根据图像的深度值改变图像的颜色,这就是我的想法。 这个过程被称为伪着色,即使用其他图像更改原始图像的颜色 在OpenCV中,可以

我是OpenCV的初学者,我已经使用
ColorMap
函数更改了图像的颜色,我还学习了如何使用查找表制作自己的
自定义ColorMap

我的问题是我有一个调色板,我用鼠标点击调色板并从中选择任何颜色。我想用我选择的颜色更改图像的颜色。有人能告诉我怎么做吗?如果有人需要下面自定义颜色贴图注释的代码,我会提供代码。提前感谢。

ColorMap
仅使用一种颜色不会更改图像的颜色。它根据图像的深度值改变图像的颜色,这就是我的想法。 这个过程被称为伪着色,即使用其他图像更改原始图像的颜色

OpenCV
中,可以使用
Lookup Table
LUT
函数来实现这一点

我为您提供了示例代码,其中我有一个调色板和一个灰度图像

伪着色代码:

cvtColor(im.clone(), im, COLOR_GRAY2BGR);
uchar b[256], g[256], r[256];
int i = 0;
for (double x = 1; x <= palette.rows; ) {

    b[i] = palette.at<Vec3b>(x, palette.cols / 2)[0];
    g[i] = palette.at<Vec3b>(x, palette.cols / 2)[1];
    r[i] = palette.at<Vec3b>(x, palette.cols / 2)[2];
    i++;
    x += 3.109; 
}
Mat channels[] = { Mat(256,1, CV_8U, b), Mat(256,1, CV_8U, g), Mat(256,1, CV_8U, r) };
Mat lut;
cv::merge(channels, 3, lut);
Mat color;
cv::LUT(im, lut, color);
cvtColor(im.clone(),im,COLOR_GRAY2BGR);
uchar b[256],g[256],r[256];
int i=0;

对于(double x=1;x)您可以附加示例输入和预期输出吗?我已经尝试上载图像,但无法执行此操作。基本上,我想要的是,当我单击调色板的任何部分时,灰度图像的颜色与该颜色匹配。与在ColorMap中所做的相同