环境准备¶
首先,确保安装了opencv-python和numpy库。如果未安装,可通过以下命令安装:
pip install opencv-python numpy
导入库与创建画布¶
在代码开头导入所需库,并创建一个空白的黑色图像作为画布(500x500像素,3通道彩色图像):
import cv2
import numpy as np
# 创建500x500的黑色图像(高度, 宽度, 通道数)
img = np.zeros((500, 500, 3), np.uint8)
1. 绘制直线¶
使用cv2.line()函数,参数包括图像、起点、终点、颜色(BGR格式)、线宽和线条类型(抗锯齿更平滑):
# 绘制从(50,50)到(450,450)的红色抗锯齿直线
cv2.line(img, (50, 50), (450, 450), (0, 0, 255), 2, cv2.LINE_AA)
2. 绘制矩形¶
使用cv2.rectangle()函数,参数为左上角坐标、右下角坐标、颜色和线宽(-1表示填充):
# 1. 绿色轮廓矩形(线宽3)
cv2.rectangle(img, (100, 100), (400, 400), (0, 255, 0), 3)
# 2. 蓝色填充矩形(线宽-1)
cv2.rectangle(img, (50, 50), (200, 200), (255, 0, 0), -1)
3. 绘制圆形¶
使用cv2.circle()函数,参数为圆心、半径、颜色和线宽:
# 1. 黄色轮廓圆(线宽5)
cv2.circle(img, (250, 250), 150, (0, 255, 255), 5)
# 2. 红色填充圆(线宽-1)
cv2.circle(img, (250, 250), 80, (0, 0, 255), -1)
4. 绘制多边形¶
使用cv2.polylines()(轮廓)或cv2.fillPoly()(填充),需指定顶点列表:
# 1. 绘制青色三角形轮廓
triangle = np.array([[300, 150], [400, 300], [200, 300]], np.int32)
cv2.polylines(img, [triangle], True, (255, 255, 0), 3)
# 2. 填充浅红色四边形
quad = np.array([[350, 100], [450, 200], [350, 300], [250, 200]], np.int32)
cv2.fillPoly(img, [quad], (255, 100, 100))
5. 显示图像¶
绘制完成后,使用cv2.imshow()显示图像,并通过cv2.waitKey()等待按键关闭窗口:
cv2.imshow("Basic Shapes", img)
cv2.waitKey(0) # 等待任意键按下
cv2.destroyAllWindows() # 关闭所有窗口
关键说明¶
- 颜色通道:OpenCV使用BGR格式,例如红色为
(0, 0, 255),而非RGB的(255, 0, 0)。 - 填充与轮廓:线宽为
-1时图形会被填充,正数为轮廓线。 - 坐标系统:图像左上角为原点
(0, 0),向右为x轴,向下为y轴。
通过以上步骤,你已掌握OpenCV绘制基本几何图形的核心方法,可进一步扩展到更复杂的图形或图像处理任务。