当前位置: 首页 > article >正文

python学opencv|读取图像(二十六)使用cv2.putText()绘制文字进阶-在图像上写文字

【1】引言

前序已经学会了在画布上绘制文字的大部分技巧,相关文章链接为:

python学opencv|读取图像(二十三)使用cv2.putText()绘制文字-CSDN博客

python学opencv|读取图像(二十四)使用cv2.putText()绘制文字进阶-倾斜文字-CSDN博客

python学opencv|读取图像(二十五)使用cv2.putText()绘制文字进阶-垂直镜像文字-CSDN博客 

上述教程中,绘制文字的画布都是自己借助numpy和RGB通道生成的。在此基础上,我们尝试将画布改为外部输入的图片。

【2】代码分析

要想将画布改为外部输入的图片,就要借用cv.imread()函数。如果暂时想不起来,可以借助下述链接回忆:

python学opencv|读取图像-CSDN博客

【3】代码测试

为便于理解,首先直接给出完整代码:

import cv2 as cv # 引入CV模块

# 读取图片
canvas = cv.imread('canvas.png')

canvas = cv.putText(canvas,'mimiao',(135,225),cv.FONT_HERSHEY_TRIPLEX,2,(158,58,185),5) #输出text
cv.imshow('Text', canvas)  # 在屏幕展示绘制圆形的效果
cv.imwrite('mimiaoText.png', canvas)  # 保存图像
cv.waitKey()  # 图像不会自动关闭
cv.destroyAllWindows()  # 释放所有窗口

这里的外部输入图片canvas.png为:

图1

然后我们使用绘制文字的函数cv2.putText()在上面写了一个“mimiao”:

图2

canvas = cv.putText(canvas,'mimiao',(135,225),cv.FONT_HERSHEY_TRIPLEX,2,(158,58,185),5) #输出text

其实 cv.putText()函数相对于前序的学习教程,唯一的区别就是把画布的名字改为了外部图片读入后的名字,在原理上其实是水到渠成顺理成章。

【4】代码测试

既然我们已经掌握了绘制倾斜文字和垂直镜像文字的技巧,不放继续增加两行代码:

canvas = cv.putText(canvas,'mimiao',(135,275),cv.FONT_HERSHEY_TRIPLEX+cv.FONT_ITALIC,2,(158,58,185),5) #输出text
canvas = cv.putText(canvas,'mimiao',(135,325),cv.FONT_HERSHEY_TRIPLEX,2,(158,58,185),5,8,True) #输出text

此时运行程序,获得的图像为:

图3

在图3里面,同时展示了常规文字、倾斜文字和垂直镜像文字在图像上的生成效果。

此时的完整代码为:

import cv2 as cv # 引入CV模块

# 读取图片
canvas = cv.imread('canvas.png')

canvas = cv.putText(canvas,'mimiao',(135,225),cv.FONT_HERSHEY_TRIPLEX,2,(158,58,185),5) #输出text
canvas = cv.putText(canvas,'mimiao',(135,275),cv.FONT_HERSHEY_TRIPLEX+cv.FONT_ITALIC,2,(158,58,185),5) #输出text
canvas = cv.putText(canvas,'mimiao',(135,325),cv.FONT_HERSHEY_TRIPLEX,2,(158,58,185),5,8,True) #输出text


cv.imshow('Text', canvas)  # 在屏幕展示绘制圆形的效果
cv.imwrite('mimiaoText2.png', canvas)  # 保存图像
cv.waitKey()  # 图像不会自动关闭
cv.destroyAllWindows()  # 释放所有窗口

【5】总结

掌握了python+opencv在图像上输出文字的技巧。


http://www.kler.cn/a/468992.html

相关文章:

  • 对话|企业如何构建更完善的容器供应链安全防护体系
  • 渗透测试--Web基础漏洞利用技巧
  • HTML - <a>
  • 【three.js】搭建环境
  • 26考研资料分享 百度网盘
  • 【C++】P5733 【深基6.例1】自动修正
  • AI定义汽车/跨域融合/整车智能,汽车智能化2.0时代新机会来了
  • Spring Boot 3 配置大全系列 —— 如何配置用户的登录与认证?
  • (转)rabbitmq怎么保证消息不丢失?
  • CPU过剩是什么意思? 有什么对电脑的影响吗?如何确认CPU有没有过剩
  • 太速科技-688-基于 VM1302的双路100G光纤PCIe4.0X16加速计算卡
  • 【Linux】函数
  • Hypium纯血鸿蒙系统 HarmonyOS NEXT自动化测试框架
  • 生成式AI新星:DeepSeek-V3 与 GPT-4o 的对比分析
  • R shiny app | 网页应用 空格分隔的文本文件在线转csv
  • Go语言的数据类型
  • 实时数仓: Hudi 表管理、Flink 性能调优或治理工具脚本
  • 微电网运维:保障能源“小宇宙”稳定运行
  • 代码随想录 day 22 回溯算法 part01
  • 自动化立体库安全使用管理制度完整版
  • 计算机网络 (25)IPV6
  • 关于C语言初步的一些基础知识整理(2)
  • 多模态论文笔记——U-ViT
  • AI中的神经元与权重矩阵之间的关系;神经元连接角度看行和列的意义
  • vue el-select封装一个滚动加载更多下拉选项的自定义指令
  • 基于深度学习算法的AI图像视觉检测