欢迎访问宙启技术站
智能推送

使用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参数中的中文文字替换为其他语言的文本即可。