opencv提供了很多接口来在图像上绘制基本形状,例如圆形,方形,椭圆,设置文字(默认只支持文字)等,但是如何绘制多边形呢?

opencv当然也提供了对应的接口供我们直接绘制,而且还提供了不止一种,方法如下:

void polylines(InputOutputArray img, InputArrayOfArrays pts,
                            bool isClosed, const Scalar& color,
                            int thickness = 1, int lineType = LINE_8, int shift = 0 );
void drawContours( InputOutputArray image, InputArrayOfArrays contours,
                              int contourIdx, const Scalar& color,
                              int thickness = 1, int lineType = LINE_8,
                              InputArray hierarchy = noArray(),
                              int maxLevel = INT_MAX, Point offset = Point() );

上面两种方法都可以实现多边形的绘制,但是他们的区别在哪里呢?

  • polylines仅可以实现多边形的绘制,如果要实现多边形的填充,必须要配合fillPoly来实现。需要注意的一点是函数参数中thickness只能是正数,不能为负数,否则会报错(未经验证)。
  • drawContours则与circle等接口类似,通过调整thickness的值,可实现多边形的填充。
Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐