如何使用cv2库绘制其他几何形状?
时间: 2024-09-11 14:15:14 浏览: 47
cv2(OpenCV的Python接口)库提供了许多函数来绘制基本的几何形状,如矩形、圆、椭圆、多边形等。以下是一些基本的函数和它们的用法:
1. `cv2.rectangle(img, pt1, pt2, color[, thickness[, lineType[, shift]]])`:绘制矩形。
- `img`:要绘制的图像。
- `pt1`:矩形的一个顶点坐标(左上角)。
- `pt2`:对角线上的另一个顶点坐标(右下角)。
- `color`:线条颜色,通常为一个元组,例如(255, 0, 0)表示蓝色。
- `thickness`:线条厚度,负值表示填充矩形。
- `lineType`:线条类型。
- `shift`:坐标点的小数位数。
2. `cv2.circle(img, center, radius, color[, thickness[, lineType[, shift]]])`:绘制圆。
- `img`:要绘制的图像。
- `center`:圆心坐标。
- `radius`:圆的半径。
- `color`:线条颜色。
- `thickness`:线条厚度,负值表示填充圆。
- `lineType`:线条类型。
- `shift`:坐标点的小数位数。
3. `cv2.ellipse(img, center, axes, angle, startAngle, endAngle, color[, thickness[, lineType[, shift]]])`:绘制椭圆。
- `img`:要绘制的图像。
- `center`:椭圆中心坐标。
- `axes`:椭圆的长轴和短轴的长度,通常为(x半径, y半径)。
- `angle`:椭圆旋转的度数。
- `startAngle`:椭圆绘制的起始角度。
- `endAngle`:椭圆绘制的结束角度。
- `color`:线条颜色。
- `thickness`:线条厚度,负值表示填充椭圆。
- `lineType`:线条类型。
- `shift`:坐标点的小数位数。
4. `cv2.polylines(img, pts, isClosed, color[, thickness[, lineType[, shift]]])`:绘制多边形。
- `img`:要绘制的图像。
- `pts`:多边形的顶点坐标,是一个N x 1 x 2的NumPy数组,表示N个顶点。
- `isClosed`:是否闭合多边形,如果为True,会自动连接第一个和最后一个点。
- `color`:线条颜色。
- `thickness`:线条厚度。
- `lineType`:线条类型。
- `shift`:坐标点的小数位数。
5. `cv2.fillPoly(img, pts, color[, lineType[, shift[, offset]]])`:填充任意多边形。
- `img`:要绘制的图像。
- `pts`:多边形的顶点坐标,是一个列表或数组,表示多个多边形。
- `color`:填充颜色。
- `lineType`:线条类型。
- `shift`:坐标点的小数位数。
- `offset`:应用于所有顶点的可选偏移量。
使用这些函数之前,确保你的图像是以正确的颜色空间(如BGR或RGB)创建的,并且你的坐标是基于图像尺寸的。这里是一个简单的示例,展示如何绘制一个矩形、一个圆和一个椭圆:
```python
import cv2
import numpy as np
# 创建一个空白图像
img = np.zeros((512, 512, 3), dtype=np.uint8)
# 绘制矩形
cv2.rectangle(img, (50, 100), (200, 400), (0, 255, 0), 2)
# 绘制圆
cv2.circle(img, (256, 256), 50, (255, 0, 0), -1)
# 绘制椭圆
cv2.ellipse(img, (300, 300), (80, 40), 30, 0, 180, (0, 0, 255), 2)
# 显示图像
cv2.imshow('Geometric Shapes', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
阅读全文