如何屏蔽FindContours()结果之外的所有内容

时间:2018-11-05 11:55:37

标签: opencv emgucv

我已经检测到要检测的交通标志的三角形。为了将此图像用于进一步处理,我想创建一个遮罩以使背景为白色(或黑色,并不重要)。

我使用以下方法检测这种形状:

 VectorOfVectorOfPoint contours = new VectorOfVectorOfPoint();
 Mat hierarchy = new Mat();

 CvInvoke.FindContours(input.GetImage(), contours, hierarchy,Emgu.CV.CvEnum.RetrType.External,Emgu.CV.CvEnum.ChainApproxMethod.ChainApproxSimple);

通过DrawContours方法,我可以轻松绘制它们,并获得正确的结果:image of the contours

如何制作遮罩以清除轮廓以外的所有东西?

1 个答案:

答案 0 :(得分:0)

如果想要的只是轮廓,则可以使用已有的轮廓并绘制到另一个类似的空白图像。 如果要填充,可以使用fillPoly函数直接用指定的颜色填充轮廓,然后使用二进制滤镜使所有具有该颜色的像素变成黑色,而其他像素变为黑色。