C++ OpenCV-如何将灰度转换为颜色(CV_8UC3)?
我试图将两个Mat对象添加到一起,但遇到了一个错误 这是工作代码:C++ OpenCV-如何将灰度转换为颜色(CV_8UC3)?,c++,opencv,colors,type-conversion,C++,Opencv,Colors,Type Conversion,我试图将两个Mat对象添加到一起,但遇到了一个错误 这是工作代码: matsrc1、src2、dst; ///读取图像(相同大小、相同类型) src1=imread(“lion.png”); src2=imread(“bluebell.png”); dst=src1+0.5*src2; imshow(“混合”,dst); 等待键(0); 返回0; src1和src2具有相同的类型,即CV_8UC3。但当我尝试这个: matsrc1、src2、src3、dst; ///读取图像 src1=imr
matsrc1、src2、dst;
///读取图像(相同大小、相同类型)
src1=imread(“lion.png”);
src2=imread(“bluebell.png”);
dst=src1+0.5*src2;
imshow(“混合”,dst);
等待键(0);
返回0;
src1
和src2
具有相同的类型,即CV_8UC3
。但当我尝试这个:
matsrc1、src2、src3、dst;
///读取图像
src1=imread(“lion.png”);
src2=imread(“bluebell.png”,imread\u灰度);
src2.convertTo(src3,颜色为2rgb);
cout您不能通过调用convertTo
更改频道数。根据:
所需的输出矩阵类型,或者更确切地说,自以来的深度
通道与输入相同;如果rtype为负数,则
输出矩阵的类型与输入矩阵的类型相同
当矩阵中有一个通道为灰度时,可以使用cv::merge
将BGR通道的这一组件放入新矩阵中,从而创建3个通道图像:
src1 = imread("lion.png");
src2 = imread("bluebell.png", IMREAD_GRAYSCALE); // one channel
cv::merge(std::vector<cv::Mat>{src2, src2, src2}, src2);
// blue, green,red as output 3-channels mat
dst = src1 + 0.5 * src2;
src1=imread(“lion.png”);
src2=imread(“bluebell.png”,imread_GRAYSCALE);//单通道
合并(std::vector{src2,src2,src2},src2);
//蓝色、绿色、红色作为输出3通道垫
dst=src1+0.5*src2;
通过调用convertTo
,您可以将存储值的数据类型转换为浮点值,例如从整数转换为浮点值 灰度图像不包含颜色信息。你怎么知道什么颜色对应什么灰色调?@JesperJuhl这是真的。但是我希望src3
成为CV_8UC3
,这样它就可以添加src1
。即使我将src3
初始化为CV_8UC3
也不起作用。或者您只需使用:CV::cvtColor(src2,src2,CV::COLOR\u GRAY2BGR)代码>。