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

在Python中使用cv2putText()函数给图像添加中文标题的步骤

发布时间:2023-12-19 06:08:56

在Python中给图像添加中文标题,可以使用OpenCV库中的cv2.putText()函数。以下是具体的步骤:

1. 导入相关库:

   import numpy as np
   import cv2
   from PIL import ImageFont, ImageDraw, Image
   

2. 加载图像:

   image = cv2.imread('path_to_image.jpg')
   

3. 设置标题的文本、字体、字号和颜色:

   text = '中文标题'
   font = ImageFont.truetype('path_to_font.ttf', size=60)  # 字体文件可以从网上下载
   color = (0, 255, 0)  # BGR格式的颜色
   

4. 转换图像的颜色空间:

   image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
   

5. 将图像转换为PIL Image对象:

   pil_image = Image.fromarray(image)
   

6. 创建一个ImageDraw对象并设置文本相关属性:

   draw = ImageDraw.Draw(pil_image)
   text_width, text_height = draw.textsize(text, font=font)
   x = (image.shape[1] - text_width) // 2
   y = 20
   

7. 在图像上绘制文本:

   draw.text((x, y), text, font=font, fill=color)
   

8. 将PIL Image对象转换回OpenCV图像格式:

   image = cv2.cvtColor(np.array(pil_image), cv2.COLOR_RGB2BGR)
   

9. 显示或保存添加标题后的图像:

   cv2.imshow('Image with Title', image)
   cv2.waitKey(0)
   cv2.imwrite('image_with_title.jpg', image)
   

这是一个完整的示例代码,你可以根据实际情况进行调整:

import numpy as np
import cv2
from PIL import ImageFont, ImageDraw, Image

# 加载图像
image = cv2.imread('path_to_image.jpg')

# 设置标题的文本、字体、字号和颜色
text = '中文标题'
font = ImageFont.truetype('path_to_font.ttf', size=60)
color = (0, 255, 0)

# 转换图像的颜色空间
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

# 将图像转换为PIL Image对象
pil_image = Image.fromarray(image)

# 创建一个ImageDraw对象并设置文本相关属性
draw = ImageDraw.Draw(pil_image)
text_width, text_height = draw.textsize(text, font=font)
x = (image.shape[1] - text_width) // 2
y = 20

# 在图像上绘制文本
draw.text((x, y), text, font=font, fill=color)

# 将PIL Image对象转换回OpenCV图像格式
image = cv2.cvtColor(np.array(pil_image), cv2.COLOR_RGB2BGR)

# 显示或保存添加标题后的图像
cv2.imshow('Image with Title', image)
cv2.waitKey(0)
cv2.imwrite('image_with_title.jpg', image)

注意事项:

- 需要提供一个中文字体文件(.ttf),用于显示中文。你可以在网上搜索适合你的需求,并将其路径替换到代码中。

- 示例代码中的路径('path_to_image.jpg'和'path_to_font.ttf')需要进行替换为实际的图像路径和字体文件路径。

- 示例中的绘制位置(x和y)是根据图像和文本大小计算得出的,你可以根据实际需求进行调整。