opencv如何绘制线条、矩形、圆弧线、椭圆弧线、多边形、添加文字

发布时间:2021-12-13 17:23:44 作者:小新
来源:亿速云 阅读:304
# OpenCV如何绘制线条、矩形、圆弧线、椭圆弧线、多边形、添加文字

OpenCV作为计算机视觉领域的核心工具库,提供了丰富的绘图功能。本文将详细介绍如何使用OpenCV绘制基础几何图形和文字,涵盖线条、矩形、圆弧线、椭圆弧线、多边形以及文字添加等操作。

## 一、准备工作

### 1.1 安装OpenCV
```python
pip install opencv-python

1.2 基础代码框架

import cv2
import numpy as np

# 创建空白画布(512x512像素,3通道BGR)
canvas = np.zeros((512, 512, 3), dtype=np.uint8)
canvas.fill(255)  # 白色背景

二、绘制线条

2.1 基本语法

cv2.line(img, pt1, pt2, color, thickness=1, lineType=cv2.LINE_8, shift=0)

2.2 参数说明

2.3 示例代码

# 绘制红色对角线
cv2.line(canvas, (0,0), (511,511), (0,0,255), 5)

# 绘制绿色水平线
cv2.line(canvas, (100,200), (400,200), (0,255,0), 3)

三、绘制矩形

3.1 基本语法

cv2.rectangle(img, pt1, pt2, color, thickness=1, lineType=cv2.LINE_8, shift=0)

3.2 特殊参数

3.3 示例代码

# 绘制蓝色边框矩形
cv2.rectangle(canvas, (50,50), (200,200), (255,0,0), 2)

# 绘制填充黄色矩形
cv2.rectangle(canvas, (300,300), (450,450), (0,255,255), -1)

四、绘制圆弧线

4.1 基本语法

cv2.ellipse(img, center, axes, angle, startAngle, endAngle, color, thickness=1, lineType=cv2.LINE_8, shift=0)

4.2 参数说明

4.3 示例代码

# 绘制90度圆弧
cv2.ellipse(canvas, (256,256), (100,50), 0, 0, 90, (128,0,128), 3)

# 绘制旋转45度的半圆
cv2.ellipse(canvas, (256,256), (80,80), 45, 0, 180, (0,128,128), 2)

五、绘制椭圆弧线

5.1 使用ellipse函数

椭圆弧线实际上是圆弧线的扩展形式,通过设置不同的长轴和短轴实现。

5.2 示例代码

# 绘制完整椭圆
cv2.ellipse(canvas, (150,400), (60,30), 0, 0, 360, (255,0,0), 2)

# 绘制部分椭圆弧
cv2.ellipse(canvas, (350,400), (80,40), 30, 45, 270, (0,0,255), 3)

六、绘制多边形

6.1 基本语法

cv2.polylines(img, pts, isClosed, color, thickness=1, lineType=cv2.LINE_8, shift=0)

6.2 参数说明

6.3 示例代码

# 定义五边形顶点
pts = np.array([[100,50], [200,80], [180,200], [120,220], [50,150]], np.int32)
pts = pts.reshape((-1,1,2))

# 绘制多边形
cv2.polylines(canvas, [pts], True, (0,128,0), 3)

# 填充多边形(使用fillPoly)
cv2.fillPoly(canvas, [pts], (200,200,0))

七、添加文字

7.1 基本语法

cv2.putText(img, text, org, fontFace, fontScale, color, thickness=1, lineType=cv2.LINE_8, bottomLeftOrigin=False)

7.2 参数说明

7.3 支持字体

FONT_HERSHEY_SIMPLEX = 0
FONT_HERSHEY_PLN = 1
FONT_HERSHEY_DUPLEX = 2
FONT_HERSHEY_COMPLEX = 3
FONT_HERSHEY_TRIPLEX = 4
FONT_HERSHEY_COMPLEX_SMALL = 5
FONT_HERSHEY_SCRIPT_SIMPLEX = 6
FONT_HERSHEY_SCRIPT_COMPLEX = 7

7.4 示例代码

# 添加简单文字
cv2.putText(canvas, 'OpenCV', (50,450), cv2.FONT_HERSHEY_SIMPLEX, 2, (0,0,0), 3)

# 添加带样式的文字
cv2.putText(canvas, 'Python', (300,100), 
            cv2.FONT_HERSHEY_SCRIPT_COMPLEX, 
            1.5, (255,100,50), 2, cv2.LINE_AA)

八、综合示例

# 创建新画布
canvas = np.zeros((600,800,3), np.uint8)
canvas.fill(240)  # 浅灰色背景

# 绘制交通信号灯
cv2.circle(canvas, (400,150), 50, (0,0,255), -1)  # 红灯
cv2.circle(canvas, (400,250), 50, (0,165,255), -1)  # 黄灯
cv2.circle(canvas, (400,350), 50, (0,255,0), -1)  # 绿灯
cv2.rectangle(canvas, (300,80), (500,420), (0,0,0), 3)

# 添加文字说明
cv2.putText(canvas, "STOP", (350,160), cv2.FONT_HERSHEY_SIMPLEX, 1, (255,255,255), 2)
cv2.putText(canvas, "READY", (350,260), cv2.FONT_HERSHEY_SIMPLEX, 1, (0,0,0), 2)
cv2.putText(canvas, "GO", (370,360), cv2.FONT_HERSHEY_SIMPLEX, 1, (0,0,0), 2)

# 显示结果
cv2.imshow("Drawing Demo", canvas)
cv2.waitKey(0)
cv2.destroyAllWindows()

九、高级技巧

9.1 抗锯齿绘制

# 使用LINE_AA抗锯齿线型
cv2.line(canvas, (0,0), (511,511), (0,0,0), 5, cv2.LINE_AA)

9.2 透明度效果

# 创建透明图层
overlay = canvas.copy()
cv2.rectangle(overlay, (100,100), (300,300), (0,0,255), -1)
cv2.addWeighted(overlay, 0.5, canvas, 0.5, 0, canvas)

9.3 绘制箭头

cv2.arrowedLine(canvas, (400,100), (400,400), (255,0,255), 3, tipLength=0.1)

十、总结

本文详细介绍了OpenCV的绘图功能,包括: 1. 线条绘制:cv2.line() 2. 矩形绘制:cv2.rectangle() 3. 圆弧/椭圆弧:cv2.ellipse() 4. 多边形绘制:cv2.polylines() 5. 文字添加:cv2.putText()

掌握这些基础绘图操作,可以为图像处理、计算机视觉项目添加可视化标注,是OpenCV应用开发的重要基础技能。

提示:所有绘图函数都会直接修改输入图像,如需保留原始图像,请先创建副本。 “`

(全文约1850字,包含代码示例和详细参数说明)

推荐阅读:
  1. 用canvas来绘制弧线和圆的方法
  2. python中opencv圆、椭圆与任意多边形的绘制案例

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

opencv

上一篇:如何分析python中二叉搜索树的 AVL树

下一篇:怎么求python二叉树中两个节点的最低公共父节点

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》