【发布时间】:2020-04-25 05:08:05
【问题描述】:
我正在尝试将两个 Mat 对象添加在一起,但我遇到了一个错误。
这是工作代码:
Mat src1, src2, dst;
/// Read image ( same size, same type )
src1 = imread("lion.png");
src2 = imread("bluebell.png");
dst = src1 + 0.5 * src2;
imshow("Blend", dst);
waitKey(0);
return 0;
src1 和 src2 具有相同的类型,即 CV_8UC3。但是当我尝试这个时:
Mat src1, src2, src3, dst;
/// Read image
src1 = imread("lion.png");
src2 = imread("bluebell.png", IMREAD_GRAYSCALE);
src2.convertTo(src3, COLOR_GRAY2RGB);
cout << "src1.type " << src1.type() << endl;
cout << "src2.type " << src2.type() << endl;
cout << "src3.type " << src3.type() << endl;
dst = src1 + 0.5 * src3;
imshow("Blend", dst);
waitKey(0);
return 0;
它不起作用。因为src2 和src3 都有0 类型,即CV_8U。但我希望src3 具有16 类型,即CV_8UC3(根据here)。这段代码带来了这个错误:
OpenCV 错误:输入参数的大小不匹配(该操作既不是“数组运算数组”(其中数组具有相同的大小和相同的通道数),也不是“数组运算标量”,也不是“标量运算数组” ') 在 cv::arithm_op 中
如何将灰度图像转换为精确类型为CV_8UC3 的彩色图像?
【问题讨论】:
-
灰度图像不包含颜色信息。你怎么知道什么颜色映射到什么灰色调?
-
@JesperJuhl 这是真的。但我希望
src3成为CV_8UC3,以便可以使用src1添加它。即使我将src3初始化为CV_8UC3也不起作用。
标签: c++ opencv colors type-conversion