使用cv2putText()函数在Python中给图像加上中文文字的实例
在Python中使用OpenCV库的cv2.putText()函数可以给图像添加中文文字。cv2.putText()函数用于在图像上绘制文本。它的语法如下:
cv2.putText(img, text, org, fontFace, fontScale, color[, thickness[, lineType[, bottomLeftOrigin]]])
参数说明:
- img:要绘制文本的图像。
- text:要绘制的文本内容。
- org:文本的起始坐标(左下角为原点)。
- fontFace:字体类型。
- fontScale:字体大小的倍数。
- color:文本颜色。通常为一个BGR元组。例如,(255, 0, 0)表示蓝色。
- thickness(可选):文本的粗细程度。
- lineType(可选):文本边界的线条类型。
- bottomLeftOrigin(可选):指示org参数是否为左下角的标志。
下面是一个完整的示例,展示了如何使用cv2.putText()函数在图像上添加中文文字:
import cv2
import numpy as np
from PIL import ImageFont, ImageDraw, Image
# 读取图像
img = cv2.imread('image.jpg')
# 将OpenCV图像转换为PIL图像
pil_img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
# 创建字体对象
font_path = '/path/to/font/file.ttf' # 字体文件的路径
font_size = 40
font = ImageFont.truetype(font_path, font_size)
# 创建绘图对象
draw = ImageDraw.Draw(pil_img)
# 定义文本内容
text = '这是一段中文文本'
# 获取文本的大小
text_size = draw.textsize(text, font=font)
# 定义文本位置
x = (img.shape[1] - text_size[0]) // 2
y = (img.shape[0] - text_size[1]) // 2
# 在图像上绘制文本
draw.text((x, y), text, font=font, fill=(255, 0, 0))
# 将PIL图像转换回OpenCV图像
cv2_img = cv2.cvtColor(np.array(pil_img), cv2.COLOR_RGB2BGR)
# 显示图像
cv2.imshow('Image', cv2_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
在上面的示例中,首先使用cv2.imread()函数读取图像,然后使用Image.fromarray()函数将OpenCV图像转换为PIL图像。接下来,选择一个合适的字体文件,并使用ImageFont.truetype()函数创建字体对象。然后,使用ImageDraw.Draw()函数创建绘图对象,并使用draw.textsize()函数获取文本的大小。根据文本的大小,计算文本在图像中的位置。最后,使用draw.text()函数在图像上绘制文本。为了显示绘制后的图像,需要使用cv2.imshow()函数。
需要注意的是,上述示例代码中的字体文件路径需要根据实际情况进行修改,并且要确保字体文件在指定路径下存在。此外,还需要将文本的位置和颜色、字体大小等参数根据实际需求进行调整。
总结:
通过cv2.putText()函数可以在Python中给图像添加中文文字。需要先将OpenCV图像转换为PIL图像,然后选择合适的字体文件并创建字体对象,使用绘图对象在图像上绘制中文文本,最后将PIL图像转换回OpenCV图像并显示。
