使用cv2putText()函数在Python中将中文文字添加到图像的教程
发布时间:2023-12-19 06:10:56
在Python中,使用cv2的putText()函数可以在图像上添加文本。putText()函数的语法如下:
cv2.putText(img, text, org, fontFace, fontScale, color, thickness, lineType, bottomLeftOrigin)
参数说明:
- img: 要添加文本的图像。
- text: 要添加的文本。
- org: 文本的起始坐标,为一个元组 (x, y)。
- fontFace: 字体类型,如cv2.FONT_HERSHEY_SIMPLEX。
- fontScale: 字体大小的比例因子。
- color: 文本的颜色,为一个元组 (B, G, R)。
- thickness: 文本的粗细程度。
- lineType: 文本的线型,如cv2.LINE_AA。
- bottomLeftOrigin: 如果为True,则坐标原点在左下角;如果为False(默认值),则坐标原点在左上角。
下面是一个示例,演示如何使用putText()函数将中文文本添加到图像中:
import cv2
import numpy as np
from PIL import Image, ImageDraw, ImageFont
def cv2ImgAddText(img, text, left, top, textColor=(0, 255, 0), textSize=20):
# 将PIL图像转换为OpenCV格式
cv2_image = cv2.cvtColor(np.array(img), cv2.COLOR_RGB2BGR)
# 使用Pillow库创建字体对象
pil_image = Image.fromarray(cv2_image)
font = ImageFont.truetype('SimHei.ttf', textSize)
# 在图像上绘制文本
draw = ImageDraw.Draw(pil_image)
draw.text((left, top), text, font=font, fill=textColor)
# 将PIL图像转换回OpenCV格式并返回
cv2_image = cv2.cvtColor(np.array(pil_image), cv2.COLOR_RGB2BGR)
return cv2_image
# 从文件中读取图像
img = cv2.imread('image.jpg')
# 调用cv2ImgAddText函数将中文文本添加到图像中
new_img = cv2ImgAddText(img, '你好,世界!', 50, 50, (255, 0, 0), 30)
# 显示图像
cv2.imshow('Image', new_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
在这个例子中,我们首先将PIL图像转换为OpenCV格式,然后使用Pillow库创建了一个中文字体对象,接着使用该字体对象在图像上绘制了中文文字。最后,我们将转换后的图像显示出来。
需要注意的是,在使用该示例之前,你需要将字体文件“SimHei.ttf”与代码文件放在同一个目录下,或者根据字体文件的实际路径进行修改。
除了在图像上添加中文文字,你也可以使用putText()函数添加其他语言的文本,只需将text参数中的中文文字替换为其他语言的文本即可。
