OpenCV-Python学习(12)—— OpenCV 向图像添加文本(cv.putText、cv.getTextSize)
1. 学习目标
- 学会使用 cv.putText 函数向图像添加文本;
- 学会使用 cv.getTextSize 函数获取绘制文本占用的宽高等属性。
2. 绘制文本 cv.putText 函数说明
2.1 函数使用
cv.putText(img, text, pos, fontFace,fontScale,color[, thickness[, lineType[, bottomLeftOrigin]]]) → img
2.2 参数说明
参数 | 说明 |
---|---|
img | 表示输入图像,允许单通道灰度图像或多通道彩色图像。 |
text | 表示添加的文本字符串。 |
pos | 表示文本字符串 左下角坐标 ,(x, y) 格式的元组。 |
fontFace | 表示字体类型。 |
fontScale | 表示字体缩放比例因子。 |
color | 表示绘制直线的颜色,(b,g,r) 格式的元组,或者表示灰度值的标量。 |
thickness | 表示绘制直线的粗细,默认值 1px,-1 表示内部填充。 |
lineType | 表示绘制直线的线性,默认为 LINE_8。 |
bottomLeftOrigin | 表示为可选参数,默认值 True 表示数据原点位于左下角,False 表示位于左上角。 |
2.3 fontFace 值说明
值 | 描述 |
---|---|
cv.FONT_HERSHEY_SIMPLEX | 表示正常大小无衬线字体。 |
cv.FONT_HERSHEY_PLAIN | 表示小号无衬线字体。 |
cv.FONT_HERSHEY_DUPLEX | 表示正常大小无衬线字体,比FONT_HERSHEY_SIMPLEX更复杂。 |
cv.FONT_HERSHEY_COMPLEX | 表示正常大小有衬线字体。 |
cv.FONT_HERSHEY_TRIPLEX | 表示正常大小有衬线字体,比FONT_HERSHEY_COMPLEX更复杂。 |
cv.FONT_HERSHEY_COMPLEX_SMALL | 表示FONT_HERSHEY_COMPLEX的小译本。 |
cv.FONT_HERSHEY_SCRIPT_SIMPLEX | 表示手写风格字体。 |
cv.FONT_HERSHEY_SCRIPT_COMPLEX | 表示手写风格字体,比FONT_HERSHEY_SCRIPT_SIMPLEX更复杂。 |
cv.FONT_ITALIC | 表示相应字体的斜体字。 |
2.4 lineType 值说明
值 | 描述 |
---|---|
cv.LINE_4 | 表示 4 邻接线型。 |
cv.LINE_8 | 表示 8 邻接线型。 |
cv.LINE_AA | 表示抗锯齿线型,图像更平滑。 |
2.5 注意
OpenCV 不支持显示中文字符,使用 cv.putText() 时添加的文本字符串不能包含中文字符(包括中文标点符号)!!!
3. 获取文本属性 cv.getTextSize 函数说明
3.1 函数使用
cv.getTextSize(text, fontFace, fontScale, thickness)
3.2 参数说明
参数 | 说明 |
---|---|
text | 表示添加的文本字符串。 |
fontFace | 表示字体类型。 |
fontScale | 表示字体缩放比例因子。 |
thickness | 表示绘制直线的粗细,默认值 1px,-1 表示内部填充。 |
3.3 返回参数说明
返回参数 | 说明 |
---|---|
(fw,fh) | 表示文本区域大小的宽高。 |
bh | 表示字体基线baseline位置。 |
4. 绘制文本实例
4.1 实例代码
import cv2 as cvdef draw_text():img = cv.imread("./images/messi5.jpg")font_faces = [cv.FONT_HERSHEY_SIMPLEX,cv.FONT_HERSHEY_PLAIN,cv.FONT_HERSHEY_DUPLEX,cv.FONT_HERSHEY_COMPLEX,cv.FONT_HERSHEY_TRIPLEX,cv.FONT_HERSHEY_COMPLEX_SMALL,cv.FONT_HERSHEY_SCRIPT_SIMPLEX,cv.FONT_HERSHEY_SCRIPT_COMPLEX,cv.FONT_ITALIC]text = "Rattenking learning OpenCV-Python!"for i in range(len(font_faces)):pos = (20, 40 * (i + 1))cv.putText(img, text, pos, font_faces[i], 0.7, (255,255,255), 1, cv.LINE_AA)cv.imshow("text img", img)cv.waitKey(0)cv.destroyAllWindows()if __name__ == "__main__":draw_text()
4.2 实例运行结果
5. 通过 cv.getTextSize 获取文本宽高属性绘制
5.1 实例代码
import cv2 as cvdef draw_text():img = cv.imread("./images/messi5.jpg")font_faces = [cv.FONT_HERSHEY_SIMPLEX,cv.FONT_HERSHEY_PLAIN,cv.FONT_HERSHEY_DUPLEX,cv.FONT_HERSHEY_COMPLEX,cv.FONT_HERSHEY_TRIPLEX,cv.FONT_HERSHEY_COMPLEX_SMALL,cv.FONT_HERSHEY_SCRIPT_SIMPLEX,cv.FONT_HERSHEY_SCRIPT_COMPLEX,cv.FONT_ITALIC]text = "Rattenking learning OpenCV-Python!"for i in range(len(font_faces)):pos = (20, 40 * (i + 1))(fw,fh),bh = cv.getTextSize(text, font_faces[i], 0.7, 1)cv.putText(img, text, pos, font_faces[i], 0.7, (255,255,255), 1, cv.LINE_AA)end_pos = (20 + fw, 40 * (i + 1))cv.line(img, pos, end_pos, (255,0,0), 1)cv.line(img, (20, 40 * (i + 1) + bh), (20 + fw, 40 * (i + 1) + bh), (0,0,255), 1)cv.imshow("text img", img)cv.waitKey(0)cv.destroyAllWindows()if __name__ == "__main__":draw_text()
5.2 实例运行结果
6. 总结
- 函数 cv.putText 的参数 thickness 不能为负数,负数报错;
cv2.error: OpenCV(4.6.0) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\drawing.cpp:1711: error: (-215:Assertion failed) 0 <= shift && shift <= XY_SHIFT && thickness >= 0 in function 'cv::PolyLine'
- 函数 cv.line 的参数 thickness 不能为负数,负数报错。
cv2.error: OpenCV(4.6.0) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\drawing.cpp:1802: error: (-215:Assertion failed) 0 < thickness && thickness <= MAX_THICKNESS in function 'cv::line'
OpenCV-Python学习(12)—— OpenCV 向图像添加文本(cv.putText、cv.getTextSize)相关推荐
- Opencv+Python学习记录7:图像加权和(内附详细代码)
一,介绍 所谓图像加权和,就是在计算两幅图像的像素值之和时,将每幅图像的权重考虑进来,可以用公式表示为: dst=saturate(src1×α+src2×β+γ) 式中,saturate()表示取饱 ...
- Opencv+Python学习记录6:图像加法运算(内附详细代码)
1.加号运算符 使用加号运算符"+"对图像a(像素值为a)和图像b(像素值为b)进行求和运算,遵循以下规则: 式中,mod()是取模运算,"mod(a+b,256)&qu ...
- 【OpenCV 例程200篇】23. 图像添加中文文字
[OpenCV 例程200篇]23. 图像添加中文文字 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 OpenCV ...
- 【OpenCV 例程200篇】22. 图像添加非中文文字
[OpenCV 例程200篇]22. 图像添加非中文文字 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 函数 cv2 ...
- Opencv+Python学习记录9:掩膜(掩码)的使用(内附详细代码)
一,基本概念 OpenCV中的很多函数都会指定一个掩模,也被称为掩码,例如: 计算结果=cv2.add(参数1,参数2,掩模) 当使用掩模参数时,操作只会在掩模值为非空的像素点上执行,并将其他像素点的 ...
- 【OpenCV 例程200篇】22. 图像添加非中文文字(cv2.putText)
『youcans 的 OpenCV 例程200篇 - 总目录』 [youcans 的 OpenCV 例程200篇]22. 图像添加非中文文字 函数 cv2.putText() 用于在图像上绘制文本字符 ...
- Python为图像添加文本内容(Writing Text on Image)
Python为图像添加文本内容(Writing Text on Image) #原始图像 #图像添加文本 # from PIL import Image, ImageDraw, ImageFontim ...
- opencv进阶学习笔记13:图像形态学操作大全(膨胀,腐蚀,开闭,黑帽,顶帽,梯度)python版
基础版学习笔记: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) 基础版形态学: opencv学 ...
- OpenCV Python教程(2、图像元素的访问、通道分离与合并)
OpenCV Python教程之图像元素的访问.通道分离与合并 转载请详细注明原作者及出处,谢谢! 访问像素 像素的访问和访问numpy中ndarray的方法完全一样,灰度图为: [python] v ...
最新文章
- php final这个关键词代表什么,php面向对象之final关键字用法及实例
- 可以ping通但远程桌面不行_【第1624期】HTML5:lt;agt;的ping属性之死亡ping与隐私追踪...
- 测试你的Python 水平----7
- TabBarController创建及使用方法简介
- iOS 5 Storyboard 学习之 Tabbar Controller,Navigation Controller
- 谈谈lucene的DocValues特性之SortedNumericDocValuesField
- HDU2012 素数判定【入门】
- Unity3D之UGUI基础4:Button按钮
- 统计数据库表中记录数
- to teacher eulogy
- signature=a50e5f0f4a417f58d5844d45a67fb641,angular中文转拼音工具
- excel之筛选、删除技巧
- 谈谈如何设计秒杀服务
- linux指令——刘雯丽
- linux下防火墙iptables用法规则详解
- 动态加载当前年份的前五年后十年
- 数据中心电气施工工序工艺管理要点
- 舒尔特注意力训练网页版
- 原命题等价于逆否命题。用于理解素数判断6X法
- SSOP封装和TSSOP封装能否兼容?
热门文章
- R语言中可视化图像的标题太长如何进行换行?
- 51nod-1019 逆序数
- MAC OS 如何修改“文件”或“文件夹”的“创建时间”和“修改时间”
- UVa340 Master-Mind Hints 猜数字游戏的提示 题解
- 【C++基础】auto关键字(C++11)(auto的使用细则;auto不能推导的场景;auto的使用场景;基于范围的for循环)
- Intellij IDEA最全的快捷键整理,中英双语
- B站服务器数据协议,B站直播间协议指南
- VCS仿真和多个test用urg工具生成coverage文件verdi查看--转载
- mapbox 天地图 底图切换组件
- 将macast的投屏web端渲染改为edge浏览器打开