在OpenCV 2中将彩色图像与灰度图像混合

时间:2014-05-10 14:18:30

标签: c++ opencv image-processing

我想在OpenCV 2中将颜色(RGB)图像与灰度图像混合。我目前正在获得运行时错误,原因似乎是我为每个图像像素使用不同的类型。例如彩色图像是CV_8U。 我的代码:

cv::Mat copy;
    image.copyTo(copy);
    cv::cvtColor(copy, copy, CV_BGR2GRAY);
    threshold(copy, copy, 0, 255,3 );
    addWeighted( image, 0.5f, copy, 0.5f, 0.0,image);

错误发生在addWeighted函数中。我不确定如何混合这两个图像。

1 个答案:

答案 0 :(得分:1)

cvtcolor之后,您的灰度图像位于一个通道中。执行threshold后将其更改回三个频道。因此,在thresholdaddWeighted之间添加语句:

cv::cvtColor ( copy, copy, CV_GRAY2BGR );

另外,我不确定你想要达到什么目的。如果您只想提取白色区域,最好使用cv::bitwise_and