Opencv删除/替换图像中的自定义颜色

时间:2017-02-11 19:21:23

标签: opencv

我想使用opencv 3和java删除彩色图像中的橙色。

Mat src = new Mat(); src = Imgcodecs.imread("coloredimage.jpg",Imgcodecs.CV_LOAD_IMAGE_COLOR);

如何在我的src(原始)图像中选择和删除橙色组件?

如果我无法移除橙色,我该如何用透明色替换它?

感谢

1 个答案:

答案 0 :(得分:0)

您可以使用以下方法:

  • 使用inRange()函数过滤橙色。获取二进制图像,使橙色部分为0,其余部分为1.示例如下: inRange(src, Scalar(0,50,100),Scalar(100,200,250),other_params);

    (这是一个基本的初步橙色滤镜。您可以优化您的值)

  • 您现在有2个Mat对象 - 您的源图像src和掩码mask。您现在可以使用以下算法:

    result=mask-src; result=mask-result;

这将确保mask的非0部分在result中保留其原始RGB值。您可以使用subtract()函数执行相同的操作。确保事先将mask转换为3通道图像。