opencv中比较实用的用于填充多边形的函数。

首先说一下我个人理解的两个函数区别:

fillConvexPoly() : 单个多边形填充。
函数原型——
cv2.fillConvexPoly( image , 多边形顶点array , RGB color)

fillPoly() : 多个多边形填充
函数原型——
cv2.fillPoly( image , [ 多边形顶点array1, 多边形顶点array2, … ] , RGB color)


一、fillConvexPoly( )函数

以填充矩形为例
我图中想填充以1、2、3、4为顶点的矩形,我就要按1、2、3、4的顺序给出坐标序列array,或者是连贯的相邻顶点顺序(比如1432,4321…)

rectangular = np.array([ [0,0],[0,740], [4032,740], [4032,0] ])
cv2.fillConvexPoly(img_gray, rectangular, (0,0,0))

效果如下图所示
在这里插入图片描述

那如果不按邻边顺序,如果我写成1423会如何呢?来看。
在这里插入图片描述
emmm, 我觉得想画五角星的画可以这样。

二、fillPoly( )函数

好了,上面都是基本操作,看看官方教程都可以。
我们玩点别的。
我如果想把一个矩形区域留住(拿车牌举例),剩下的填充为白色应该怎么办呢?
举一反三一下,两种办法:
(1)
在这里插入图片描述

cv2.fillPoly(img_gray, [rec1, rec2, rec3, rec4], (255,255,255))

四个矩形,改用fillPoly()方法。
结果如上图。

(2)非要死脑筋其实用fillConvexPoly( )也不是不可以。
在这里插入图片描述
画个示意图,你们懂我意思吧。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐