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