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在图像上输出文字的技巧。