opencv画多边形(opencv 多边形拟合)
## OpenCV 画多边形### 简介在计算机视觉和图像处理中,绘制形状(例如多边形)是一项基本任务。OpenCV (Open Source Computer Vision Library) 提供了强大的工具来实现这一点。本文将详细介绍如何使用 OpenCV 在图像上绘制多边形。### 1. cv2.polylines() 函数`cv2.polylines()` 函数是 OpenCV 中用于绘制多边形的主要函数。它可以绘制具有三条或更多条边的任何形状。#### 1.1 语法```python cv2.polylines(img, pts, isClosed, color, thickness, lineType, shift) ```参数说明:-
img
: 要绘制多边形的图像。 -
pts
: 多边形顶点的坐标,以 NumPy 数组的形式提供。例如,一个三角形可以表示为 `np.array([[x1, y1], [x2, y2], [x3, y3]])`。 -
isClosed
: 如果为 True,则绘制封闭的多边形;如果为 False,则绘制一条折线。 -
color
: 多边形的颜色,以 BGR 格式表示。例如,红色表示为 `(0, 0, 255)`。 -
thickness
: 多边形的线条粗细(以像素为单位)。 -
lineType
: 线条类型,例如 `cv2.LINE_8`(默认)、`cv2.LINE_4`、`cv2.LINE_AA`(抗锯齿)。 -
shift
: 坐标点的小数位数。#### 1.2 示例以下代码演示了如何绘制一个填充的红色三角形和一个未填充的蓝色矩形:```python import cv2 import numpy as np# 创建一个空白图像 img = np.zeros((512, 512, 3), np.uint8)# 定义三角形顶点 pts_triangle = np.array([[100, 100], [300, 100], [200, 300]], np.int32) pts_triangle = pts_triangle.reshape((-1, 1, 2))# 绘制填充的红色三角形 cv2.polylines(img, [pts_triangle], True, (0, 0, 255), -1)# 定义矩形顶点 pts_rectangle = np.array([[150, 200], [350, 200], [350, 400], [150, 400]], np.int32) pts_rectangle = pts_rectangle.reshape((-1, 1, 2))# 绘制未填充的蓝色矩形 cv2.polylines(img, [pts_rectangle], True, (255, 0, 0), 3)# 显示图像 cv2.imshow("Polygons", img) cv2.waitKey(0) cv2.destroyAllWindows() ```### 2. 绘制不同类型的多边形您可以使用 `cv2.polylines()` 函数绘制各种多边形,只需更改顶点坐标即可。以下是一些示例:-
正方形:
```python pts_square = np.array([[100, 100], [200, 100], [200, 200], [100, 200]], np.int32) pts_square = pts_square.reshape((-1, 1, 2)) cv2.polylines(img, [pts_square], True, (0, 255, 0), 2) ```-
五边形:
```python pts_pentagon = np.array([[200, 50], [300, 150], [250, 250], [150, 250], [100, 150]], np.int32) pts_pentagon = pts_pentagon.reshape((-1, 1, 2)) cv2.polylines(img, [pts_pentagon], True, (255, 255, 0), 2) ```### 3. 总结本文介绍了如何使用 OpenCV 的 `cv2.polylines()` 函数在图像上绘制各种类型的多边形。通过更改函数的参数,您可以控制多边形的颜色、粗细、线条类型以及是否填充。
OpenCV 画多边形
简介在计算机视觉和图像处理中,绘制形状(例如多边形)是一项基本任务。OpenCV (Open Source Computer Vision Library) 提供了强大的工具来实现这一点。本文将详细介绍如何使用 OpenCV 在图像上绘制多边形。
1. cv2.polylines() 函数`cv2.polylines()` 函数是 OpenCV 中用于绘制多边形的主要函数。它可以绘制具有三条或更多条边的任何形状。
1.1 语法```python cv2.polylines(img, pts, isClosed, color, thickness, lineType, shift) ```参数说明:- **img**: 要绘制多边形的图像。 - **pts**: 多边形顶点的坐标,以 NumPy 数组的形式提供。例如,一个三角形可以表示为 `np.array([[x1, y1], [x2, y2], [x3, y3]])`。 - **isClosed**: 如果为 True,则绘制封闭的多边形;如果为 False,则绘制一条折线。 - **color**: 多边形的颜色,以 BGR 格式表示。例如,红色表示为 `(0, 0, 255)`。 - **thickness**: 多边形的线条粗细(以像素为单位)。 - **lineType**: 线条类型,例如 `cv2.LINE_8`(默认)、`cv2.LINE_4`、`cv2.LINE_AA`(抗锯齿)。 - **shift**: 坐标点的小数位数。
1.2 示例以下代码演示了如何绘制一个填充的红色三角形和一个未填充的蓝色矩形:```python import cv2 import numpy as np
创建一个空白图像 img = np.zeros((512, 512, 3), np.uint8)
定义三角形顶点 pts_triangle = np.array([[100, 100], [300, 100], [200, 300]], np.int32) pts_triangle = pts_triangle.reshape((-1, 1, 2))
绘制填充的红色三角形 cv2.polylines(img, [pts_triangle], True, (0, 0, 255), -1)
定义矩形顶点 pts_rectangle = np.array([[150, 200], [350, 200], [350, 400], [150, 400]], np.int32) pts_rectangle = pts_rectangle.reshape((-1, 1, 2))
绘制未填充的蓝色矩形 cv2.polylines(img, [pts_rectangle], True, (255, 0, 0), 3)
显示图像 cv2.imshow("Polygons", img) cv2.waitKey(0) cv2.destroyAllWindows() ```
2. 绘制不同类型的多边形您可以使用 `cv2.polylines()` 函数绘制各种多边形,只需更改顶点坐标即可。以下是一些示例:- **正方形:** ```python pts_square = np.array([[100, 100], [200, 100], [200, 200], [100, 200]], np.int32) pts_square = pts_square.reshape((-1, 1, 2)) cv2.polylines(img, [pts_square], True, (0, 255, 0), 2) ```- **五边形:** ```python pts_pentagon = np.array([[200, 50], [300, 150], [250, 250], [150, 250], [100, 150]], np.int32) pts_pentagon = pts_pentagon.reshape((-1, 1, 2)) cv2.polylines(img, [pts_pentagon], True, (255, 255, 0), 2) ```
3. 总结本文介绍了如何使用 OpenCV 的 `cv2.polylines()` 函数在图像上绘制各种类型的多边形。通过更改函数的参数,您可以控制多边形的颜色、粗细、线条类型以及是否填充。