自学内容网 自学内容网

Python+OpenCV系列:绘制图形和文字


在图像处理领域,绘制基本图形和文字是一个常见需求,例如标记对象、绘制边界框或添加说明文字。Python的OpenCV库提供了强大的工具,能够方便地在图像上绘制点、线、矩形、圆形、椭圆以及文字。本篇博客将详细介绍如何使用OpenCV实现这些功能,并通过示例代码展示其实际用法。


1. 基本绘图函数简介

OpenCV绘制功能的核心函数是cv2模块中的绘图方法。以下是一些常用的绘制函数:

  • cv2.line:绘制直线。
  • cv2.rectangle:绘制矩形。
  • cv2.circle:绘制圆。
  • cv2.ellipse:绘制椭圆。
  • cv2.putText:在图像上添加文字。

所有绘图函数需要的基本参数:

  • img:目标图像,必须是NumPy数组。
  • color:颜色,通常为BGR格式的三元组,例如(255, 0, 0)表示蓝色。
  • thickness:线条粗细,单位为像素,负值(如-1)表示填充形状。
  • lineType:线条类型,例如cv2.LINE_8(默认值)表示8连通线。

2. 绘制示例代码

以下代码展示了如何绘制不同的图形和文字:

2.1 创建一个空白图像

import cv2
import numpy as np

# 创建一个500x500像素的黑色背景
img = np.zeros((500, 500, 3), dtype=np.uint8)

2.2 绘制基本图形

1. 绘制直线
# 从点(50, 50)到(450, 50)绘制一条蓝色直线
cv2.line(img, (50, 50), (450, 50), color=(255, 0, 0), thickness=3)
2. 绘制矩形
# 绘制一个绿色矩形,左上角为(100, 100),右下角为(400, 300)
cv2.rectangle(img, (100, 100), (400, 300), color=(0, 255, 0), thickness=5)
3. 绘制圆
# 绘制一个红色的圆,中心为(250, 250),半径为50
cv2.circle(img, (250, 250), radius=50, color=(0, 0, 255), thickness=-1)  # 填充圆
4. 绘制椭圆
# 绘制一个椭圆,中心为(250, 400),轴长为(100, 50),旋转角度为45°
cv2.ellipse(img, (250, 400), (100, 50), angle=45, startAngle=0, endAngle=360, color=(255, 255, 0), thickness=3)

2.3 添加文字

# 在图像上添加文字
cv2.putText(img, "OpenCV Drawing", (50, 450), fontFace=cv2.FONT_HERSHEY_SIMPLEX, 
            fontScale=1, color=(255, 255, 255), thickness=2, lineType=cv2.LINE_AA)

3. 显示与保存图像

# 显示绘制结果
cv2.imshow("Drawing Example", img)

# 保存图像到本地
cv2.imwrite("drawing_example.png", img)

# 等待按键关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()

4. 扩展应用

通过这些基本的绘图功能,您可以实现以下任务:

  1. 标注图像:在物体检测任务中,绘制边界框并添加标签文字。
  2. 创建自定义图像:设计可视化图形用于说明或教学。
  3. 增强图像处理任务:在处理结果上绘制辅助线条或标记点以便调试。

总结

本文通过实例演示了如何使用OpenCV绘制直线、矩形、圆形、椭圆以及文字。通过这些基础功能,您可以方便地在图像上实现各种标注和可视化效果。在实际项目中,合理应用这些绘图功能可以大大提升图像处理任务的可读性和表达力。

希望这篇博客能帮助您更好地掌握OpenCV的绘图功能!如果有任何问题或建议,请在评论区留言讨论!


原文地址:https://blog.csdn.net/bayinglong/article/details/144302744

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!