首页 > 编程语言 >Python+OpenCV系列:绘制图形和文字

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

时间:2024-12-07 12:58:12浏览次数:7  
标签:img Python cv2 50 OpenCV 图像 绘制 255

绘制图形和文字


在图像处理领域,绘制基本图形和文字是一个常见需求,例如标记对象、绘制边界框或添加说明文字。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的绘图功能!如果有任何问题或建议,请在评论区留言讨论!

标签:img,Python,cv2,50,OpenCV,图像,绘制,255
From: https://blog.csdn.net/bayinglong/article/details/144302744

相关文章

  • 基于微信平台健身小助手小程序的设计与实现【java或python】-计算机毕业设计源码+LW文
    选题的意义与目的网络和科技的进步以及人们生活条件的提高都让微信小程序越来越平民化,深入日常生活中。我国非常强调体育以及健身,需要不断的让更多人参与到健身中,因为健身不仅可以锻炼身体,也能锻炼意志,有了健康的身体,就可以好好的努力工作,努力学习,为国家做出应有的贡献。有一......
  • Python Tkinter制作恶作剧小程序(可以发给朋友)
    跟大家分享了游戏和教程,也该来点好玩的了,今天我就来和大家分享一个让朋友无法使用电脑的程序。这个程序运行之后,你会发现电脑的屏幕被蒙上了一层白布,除了ALT+F4以外都关不掉它,如果点击电脑屏幕还会弹出:程序:importtkinterastkfromtkinterimportmessageboxdefshow_......
  • [oeasy]python049_[词根溯源]locals_现在都定义了哪些变量
    [词根溯源]locals_现在都定义了哪些变量_地址_pdb_调试中观察变量回忆上次内容上次我们了解了变量赋值连等赋值解包赋值 所有对象变量variable模块module函数function类class都有自己所属的类型也都在内存中引用唯一位置......
  • Python从0到100(七十六):计算机视觉-直方图和自适应直方图均衡化(文末送书)
    前言:零基础学Python:Python从0到100最新最全教程。想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、计算机视觉、机器学习、神经网络以及人工智能相关知......
  • python毕设 图书馆管理信息系统程序+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于图书馆管理信息系统的研究,现有研究多集中在传统管理模式或者基于特定技术框架的实现方面12。专门针对使用Python实现功能全面(包含......
  • 使用Python实现智能食品消费趋势预测的深度学习模型
    在现代食品行业中,预测消费趋势对于库存管理、生产计划和市场营销策略的制定至关重要。通过深度学习技术,可以有效地分析和预测食品消费趋势,从而帮助企业做出数据驱动的决策。本文将详细介绍如何使用Python构建一个智能食品消费趋势预测的深度学习模型,并通过具体代码示例展示......
  • Python 操作 MySQL 数据库
    Python标准数据库接口为PythonDB-API,PythonDB-API为开发人员提供了数据库应用编程接口。Python数据库接口支持非常多的数据库,你可以选择适合你项目的数据库:GadFlymSQLMySQLPostgreSQLMicrosoftSQLServer2000InformixInterbaseOracleSybase你可以访问Python数据库接......
  • 用一篇博文带你了解c++和python两种编程语言到底有什么区别?
      成长路上不孤单......
  • 三门问题的python代码模拟和原理解释
    三门问题的python代码模拟和原理解释刷视频时偶然刷到了三门问题,于是好奇的查阅了一下先给出三门问题的简单介绍(引用自百度):三门问题(MontyHallproblem)亦称为蒙提霍尔问题、蒙特霍问题或蒙提霍尔悖论,大致出自美国的电视游戏节目Let’sMakeaDeal。问题名字来自该节目......
  • python数据类型
    1.number(数字):int(整数类型)、float(浮点类型)、bool(布尔类型)、complex(复数类型)2.string(字符串):字符串就是在单引号、双引号和三引号之间的文字3.list(列表):列表是任意对象的有序集合,列表写在中括号[]里,元素之间用逗号隔开4.tuple(元组):元组与列表类似,不同之处在于元组的元素不能修改元组......