Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.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-如何将灰度转换为颜色(CV_8UC3)?_C++_Opencv_Colors_Type Conversion - Fatal编程技术网

C++ OpenCV-如何将灰度转换为颜色(CV_8UC3)?

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

我试图将两个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=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)