### OpenCV-Python 绘制图形的基础方法
OpenCV 是一个强大的计算机视觉库,支持多种图像处理功能。尽管它主要用于图像和视频分析,但也提供了基本的绘图函数来创建简单的形状和线条[^1]。
以下是使用 `cv2` 库绘制常见几何图形的一些基础示例:
#### 导入必要的模块
在开始之前,确保已导入所需的 Python 模块:
```python
import cv2
import numpy as np
```
---
#### 创建空白画布
为了绘制任何图形,通常会先创建一块黑色背景作为画布:
```python
canvas = np.zeros((500, 500, 3), dtype=np.uint8) # 高度500px,宽度500px,RGB三通道
```
---
#### 绘制直线
可以使用 `cv2.line()` 函数绘制一条线段:
```python
start_point = (50, 50) # 起始坐标
end_point = (400, 400) # 结束坐标
color = (255, 0, 0) # BGR颜色模式下的蓝色
thickness = 2 # 线条粗细
cv2.line(canvas, start_point, end_point, color, thickness)
```
---
#### 绘制矩形
通过 `cv2.rectangle()` 可以定义一个矩形区域:
```python
top_left_corner = (100, 100) # 左上角顶点
bottom_right_corner = (300, 300) # 右下角顶点
color = (0, 255, 0) # 绿色
thickness = 3 # 边框厚度 (-1表示填充)
cv2.rectangle(canvas, top_left_corner, bottom_right_corner, color, thickness)
```
---
#### 绘制圆形
利用 `cv2.circle()` 方法可绘制圆圈或椭圆:
```python
center_coordinates = (250, 250) # 圆心位置
radius = 50 # 半径大小
color = (0, 0, 255) # 红色
thickness = -1 # 填充内部
cv2.circle(canvas, center_coordinates, radius, color, thickness)
```
---
#### 添加文字
可以通过 `cv2.putText()` 将文本渲染到图片上:
```python
text = "Hello OpenCV"
position = (50, 450) # 文本起始位置
font = cv2.FONT_HERSHEY_SIMPLEX # 字体样式
scale = 1 # 字号比例
color = (255, 255, 255) # 白色字体
thickness = 2 # 笔触粗细
cv2.putText(canvas, text, position, font, scale, color, thickness)
```
---
#### 显示结果
最后调用窗口展示所绘制的内容并等待按键退出:
```python
cv2.imshow('Canvas', canvas)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
以上代码片段展示了如何借助 OpenCV 的内置工具完成一些简单而直观的艺术创作。
---
#### 完整示例程序
下面是一个综合性的例子,演示上述所有操作:
```python
import cv2
import numpy as np
# 初始化画布
canvas = np.zeros((500, 500, 3), dtype=np.uint8)
# 绘制直线
cv2.line(canvas, (50, 50), (400, 400), (255, 0, 0), 2)
# 绘制矩形
cv2.rectangle(canvas, (100, 100), (300, 300), (0, 255, 0), 3)
# 绘制圆形
cv2.circle(canvas, (250, 250), 50, (0, 0, 255), -1)
# 添加文字
cv2.putText(canvas, "OpenCV Drawing", (50, 450),
cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)
# 展示最终效果
cv2.imshow('Drawing Example', canvas)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
此脚本能帮助理解 OpenCV 中不同类型的绘图命令及其参数设置方式。
---