【问题标题】:Filling shapes in an image with a particular color opencv用特定颜色opencv填充图像中的形状
【发布时间】:2016-04-05 20:28:09
【问题描述】:

我有这张图片

我想用白色填充多边形。我尝试了fillpoly,但无法正常工作。有任何想法吗?我在 C++ 中使用 opencv 3.0。

【问题讨论】:

  • 请显示您尝试过的代码

标签: c++ c opencv image-processing image-segmentation


【解决方案1】:

这是一个有趣的问题,我想我会在命令行中使用 ImageMagick 进行尝试,但您可以很容易地将该技术适应 OpenCV。我怀疑它可能与@Arjun 的代码类似,但我无法轻松阅读...

我将分三步完成,每一步都建立在最后一步的基础上,但实际上你只需要最后的一行命令。

首先,从左上角开始用黄色填充图像:

convert shapes.png -fill yellow -draw 'color 0,0 floodfill' result.png

现在将填充颜色设置为白色,并用白色填充颜色覆盖所有黑色区域:

convert shapes.png -fill yellow -draw 'color 0,0 floodfill' -fill white -opaque black result.png

现在将填充颜色设置为黑色,并用黑色填充颜色覆盖黄色区域:

convert shapes.png -fill yellow -draw 'color 0,0 floodfill' -fill white -opaque black -fill black -opaque yellow result.png

【讨论】:

    【解决方案2】:

    试试下面的代码,用白色填充封闭的对象。

     cv::Mat edgesIn; 
     cv::Mat edgesNeg =temp.clone();
     //  imshow( "edgesNeg", edgesNeg );
     cv::floodFill(edgesNeg, cv::Point(0,0), CV_RGB(255,255,255));
     imshow( "edgesNeg", edgesNeg );
     bitwise_not(edgesNeg, edgesNeg);
     filledEdgesOut = (edgesNeg | temp);
     imshow("Filled region",filledEdgesOut);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-23
      • 2014-05-26
      • 2014-03-30
      • 1970-01-01
      • 1970-01-01
      • 2014-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多