Python中使用cv2putText()函数在图像上添加中文标签的简单方法
发布时间:2023-12-19 06:10:44
在Python中使用cv2库的putText()函数在图像上添加中文标签的方法相对比较复杂。这是因为OpenCV的putText()函数默认不支持中文字符的渲染。
为了在图像上添加中文标签,需要安装并使用第三方库Pillow和matplotlib来渲染和显示中文字符,然后再利用OpenCV的putText()函数将渲染好的中文字符添加到图像中。
下面是一个较简单的方法,使用Pillow和matplotlib生成中文字符的图像,并将其添加到OpenCV的图像中:
import cv2
import numpy as np
from PIL import Image, ImageFont, ImageDraw
import matplotlib.font_manager as fm
def put_chinese_text(image, text, position, text_color=(0, 255, 0), text_size=20):
img_PIL = Image.fromarray(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
font = ImageFont.truetype(fm.findfont(fm.FontProperties(family="SimHei")), text_size)
draw = ImageDraw.Draw(img_PIL)
draw.text(position, text, font=font, fill=text_color)
image = cv2.cvtColor(np.array(img_PIL), cv2.COLOR_RGB2BGR)
return image
# 示例图像
image = cv2.imread('example.png')
# 在图像上添加中文标签
image_with_text = put_chinese_text(image, "中文标签", (100, 100), text_size=40)
# 显示带有中文标签的图像
cv2.imshow("Image with text", image_with_text)
cv2.waitKey(0)
cv2.destroyAllWindows()
在这个例子中,我们首先定义了一个函数put_chinese_text(),该函数接受图像、中文文本、文本位置、文本颜色和文本大小等参数。该函数的功能是将中文文本渲染为图像,并将渲染后的图像转换回OpenCV的BGR格式。接下来,我们读取示例图像,并调用put_chinese_text()函数在图像上添加中文标签。最后,使用OpenCV的imshow()函数显示带有中文标签的图像。
需要注意的是,为了渲染中文字符,我们使用了Pillow库中的ImageFont、ImageDraw和findfont函数。findfont函数用于查找并选择支持中文的字体文件。在这个例子中,我们选择了"SimHei"字体。你也可以根据自己的需求选择其他字体。
希望以上方法对你有帮助!
