使用 OpenCV 进行图像处理和计算机视觉任务是非常常见的。OpenCV 提供了许多函数和接口,以帮助开发者快速实现各种图像处理操作。其中一个非常有用的函数是 `fillPoly`,它可以用来填充多边形区域。
`fillPoly` 函数的 Python 接口需要以下几个输入参数:- `img`:要进行填充操作的图像。- `pts`:一个包含多个多边形顶点的数组。每个多边形由一系列顶点组成,每个顶点都是一个二维坐标 `(x, y)`。- `color`:要填充的颜色。可以是一个单一的 BGR/RGB 值,或者是一个表示颜色的列表。- `lineType`:多边形边界线的类型。可以是 `cv2.LINE_8` 或 `cv2.LINE_AA`。- `shift`:位移值,用于计算多边形顶点的坐标。下面是一个使用 `fillPoly` 函数的示例代码,展示了如何填充一个多边形区域:pythonimport cv2import numpy as np# 创建一个空白图像img = np.zeros((500, 500, 3), dtype=np.uint8)# 定义多边形顶点坐标pts = np.array([[100, 100], [400, 100], [300, 400], [200, 300]], np.int32)# 将多边形顶点坐标转换为 OpenCV 的要求格式pts = pts.reshape((-1, 1, 2))# 填充多边形区域cv2.fillPoly(img, [pts], (0, 255, 0))# 显示图像cv2.imshow("Filled Polygon", img)cv2.waitKey(0)cv2.destroyAllWindows()在这个示例中,我们首先创建了一个大小为 (500, 500) 的空白图像。然后,我们定义了一个包含四个顶点的多边形,这些顶点组成了一个不规则的四边形。接下来,我们将多边形顶点坐标转换为 OpenCV 的要求格式,并使用绿色填充了多边形区域。最后,我们显示填充后的图像。使用 `fillPoly` 函数填充多个多边形除了填充单个多边形外,`fillPoly` 函数还可以使用一个包含多个多边形顶点坐标的数组来填充多个多边形区域。下面是一个例子:
pythonimport cv2import numpy as np# 创建一个空白图像img = np.zeros((500, 500, 3), dtype=np.uint8)# 定义多个多边形顶点坐标polys = [ np.array([[100, 100], [200, 100], [200, 200]], np.int32), np.array([[300, 300], [400, 300], [400, 400]], np.int32)]# 将多边形顶点坐标转换为 OpenCV 的要求格式polys = [poly.reshape((-1, 1, 2)) for poly in polys]# 填充多个多边形区域cv2.fillPoly(img, polys, (0, 0, 255))# 显示图像cv2.imshow("Filled Polygons", img)cv2.waitKey(0)cv2.destroyAllWindows()在这个示例中,我们定义了两个多边形,一个是一个不规则三角形,另一个是一个不规则四边形。然后,我们将多边形顶点坐标转换为 OpenCV 的要求格式,并使用红色填充了这两个多边形区域。最后,我们显示填充后的图像。通过 `fillPoly` 函数,我们可以方便地在图像中填充任意形状的多边形区域,这在许多图像处理和计算机视觉任务中都非常有用。无论是填充单个多边形还是填充多个多边形,`fillPoly` 都可以帮助我们轻松实现这些操作。