OpenCV 提供了丰富的绘图 API,可快速在图像上绘制基础图形并添加文字标注。本文通过一站式代码示例,演示直线、圆、椭圆、矩形、多边形的绘制及文字添加方法,新手可直接套用。
核心代码实现
python
import cv2 as cv
import numpy as np
# 1. 读取图像
src = cv.imread(".\image\1.bmp")
cv.imshow('intimage', src)
green = (0, 255, 0) # OpenCV中颜色为BGR格式,此处为绿色
# 2. 绘制直线:起点(0,0) → 终点(300,300),绿色
cv.line(src, (0, 0), (300, 300), green)
# 3. 绘制矩形:左上角(0,0) → 右下角(100,100),绿色,线宽5(-1为填充)
cv.rectangle(src, (0, 0), (100, 100), green, 5)
# 4. 绘制圆形:圆心(图像中心),半径100,绿色
cv.circle(src, (src.shape[0]//2, src.shape[1]//2), 100, green)
# 5. 绘制椭圆:中心(图像中心),长轴200、短轴100,角度0-360,绿色,线宽3
cv.ellipse(src, (src.shape[0]//2, src.shape[1]//2), (100, 200), 0, 0, 360, green, 3)
# 6. 绘制多边形:顶点坐标重塑后闭合绘制
pts = np.array([[10, 20], [20, 50], [60, 70], [80, 90]], np.int32)
pts = pts.reshape((-1, 1, 2))
cv.polylines(src, [pts], True, green)
# 7. 添加文字:字体COMPLEX,大小2,绿色,线宽2
font = cv.FONT_HERSHEY_COMPLEX
cv.putText(src, 'integer', (src.shape[0]//2, src.shape[1]//2), font, 2, green, 2)
# 8. 显示结果
cv.imshow('outimage', src)
cv.waitKey(0)
cv.destroyAllWindows()
关键知识点解析
| 操作 | 核心参数说明 |
|---|---|
直线line |
(图像,起点,终点,颜色),默认线宽 1 |
矩形rectangle |
(图像,左上点,右下点,颜色,线宽),线宽 =-1 时填充矩形 |
圆形circle |
(图像,圆心,半径,颜色),圆心用//取整(图像尺寸为整数) |
椭圆ellipse |
(图像,中心,(短轴,长轴), 旋转角,起始角,终止角,颜色,线宽) |
多边形polylines |
顶点数组需 reshape 为 (-1,1,2),True表示闭合多边形 |
文字putText |
(图像,文字内容,起始坐标,字体,大小,颜色,线宽),字体为预设常量 |
实用技巧
- 颜色适配:OpenCV 颜色为 BGR 格式,红色
(0,0,255)、蓝色(255,0,0),需注意与 RGB 区别; - 填充图形:所有绘图 API 的线宽参数设为
-1,即可得到填充式图形(如实心圆、实心矩形); - 坐标适配:用
src.shape[0]//2(高)、src.shape[1]//2(宽)获取图像中心,适配任意尺寸图像; - 字体调整:
FONT_HERSHEY_SIMPLEX为简易字体,FONT_HERSHEY_COMPLEX为复杂字体,可按需替换。