opencv2.fillPoly 的 python 接口想要什么作为输入

作者:编程家 分类: python 时间:2025-05-03

使用 OpenCV 进行图像处理和计算机视觉任务是非常常见的。OpenCV 提供了许多函数和接口,以帮助开发者快速实现各种图像处理操作。其中一个非常有用的函数是 `fillPoly`,它可以用来填充多边形区域。

`fillPoly` 函数的 Python 接口需要以下几个输入参数:

- `img`:要进行填充操作的图像。

- `pts`:一个包含多个多边形顶点的数组。每个多边形由一系列顶点组成,每个顶点都是一个二维坐标 `(x, y)`。

- `color`:要填充的颜色。可以是一个单一的 BGR/RGB 值,或者是一个表示颜色的列表。

- `lineType`:多边形边界线的类型。可以是 `cv2.LINE_8` 或 `cv2.LINE_AA`。

- `shift`:位移值,用于计算多边形顶点的坐标。

下面是一个使用 `fillPoly` 函数的示例代码,展示了如何填充一个多边形区域:

python

import cv2

import 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` 函数还可以使用一个包含多个多边形顶点坐标的数组来填充多个多边形区域。下面是一个例子:

python

import cv2

import 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` 都可以帮助我们轻松实现这些操作。