【问题标题】:How can we remove one solid color from an Image?我们如何从图像中删除一种纯色?
【发布时间】:2016-01-21 16:52:51
【问题描述】:

使用 cvSet 方法,我们可以轻松地用纯色填充图像。 有什么方法可以帮助你从你的图像中去除一些颜色 (例如,我有一张森林的图像。基本上它会有很多绿色成分、树叶等。我可以去掉绿色保持其他一切不变吗。)

【问题讨论】:

  • “删除它们”是什么意思?将它们设置为 0?
  • 为什么不保存图像的临时副本并从中恢复?
  • 我的例子可能模棱两可。假设我有一个森林的图像。我加载它。如果我将 cvSet 设置为 0,它会删除绿色组件吗?
  • 也许你可以给我们看一些图片来描述你想要实现的目标。

标签: opencv


【解决方案1】:
    char* inputPath = "TEST.png";

    Mat src = imread(inputPath);
    Mat BGRChannels[3];
    split(src,BGRChannels); // split the BGR channesl
    BGRChannels[1]=Mat::zeros(src.rows,src.cols,CV_8UC1);// removing Green channel
    merge(BGRChannels,3,src); // pack the image 
    namedWindow("B0R",1);
    imshow("B0R",src);
    waitKey(0);

结果如下:

【讨论】:

  • 有更简单的方法:src = src - Scalar(0,255,0);
  • @sturkmen,是的,这也抵消了 8 位平面 RGB 图像中的绿色平面。
猜你喜欢
  • 2011-05-19
  • 1970-01-01
  • 2015-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多