Opencv - 用多边形内的一个创建二元掩模(给定它的顶点)

时间:2015-03-11 23:04:06

标签: opencv

要求:创建640x360大小的二进制掩码。位于多边形内的点标记为1.否则为0。

输入:多边形的顶点。当用户在html页面上标记多边形时,将获得顶点。

是否可以通过简单的方式在opencv中这样做?

我知道一种可能的解决方案。 http://alienryderflex.com/polygon/。这允许查找点是否位于给定其顶点的多边形内。但是它需要我遍历每个像素以查找它们是否位于多边形内部,我认为这是一个漫长的过程。

1 个答案:

答案 0 :(得分:3)

  

是否可以通过简单的方式在opencv中这样做?

是的,您想使用OpenCV fillPoly功能:

void fillPoly(Mat& img, const Point** pts, const int* npts, int ncontours, const Scalar& color, int lineType=8, int shift=0, Point offset=Point() )

你可以找到一个关于如何使用这个here的例子,但有效的是fillPoly()所做的是“填充由多个多边形轮廓限定的区域。该函数可以填充复杂区域,例如,带孔的区域,有自交的轮廓(它们的一些部分),等等。“