OpenCV不支持中文输入,借用pillow库在图片上添加中文
环境:
python=3.7.8, Windows
需求的库:
pip install opencv-python,numpy
pip install pillow==9.2.0
说明:
import cv2, math
import numpy as np
from PIL import Image, ImageFont, ImageDraw
font_size = 30
used_color = (0, 255, 255)
used_str = '如果我们想要为中文文本添加样式,可以采用以下代码:'
used_font = ImageFont.truetype("STXINWEI.TTF", size= font_size)
img_cv = cv2.imread("test.png")
h, w = img_cv.shape[0], img_cv.shape[1]
# # 图片长度足够放字幕,不需要换行
if w / font_size > len(used_str):
used_len = len(used_str) * font_size
used_point = ((w / 2) - (used_len / 2), h*0.55)
# # 图片长度不够放字幕,需要换行处理
else:
length = math.floor(w / font_size)
used_str = [used_str[i:i+length] for i in range(0, len(used_str), length)]
used_str = "\n".join(used_str)
used_point = (0, h*0.55)
img_pil = Image.fromarray(img_cv)
draw = ImageDraw.Draw(img_pil)
draw.text(used_point, used_str, font=used_font, fill= used_color)
img_now = np.array(img_pil)
cv2.imwrite("out2.png", img_now)