OpenCV不支持中文输入,借用pillow库在图片上添加中文
环境:
python=3.7.8, Windows
需求的库:
pip install opencv-python,numpy
pip install pillow==9.2.0
说明:
- 第五行:font_size是字体大小,单个字的长、宽都等于font_size的数值;
- 第六行:used_color是BGR 格式颜色;
- 第八行:字体可以在——我的电脑>C盘>windows>Fonts 选择需要的字体文件存入项目中;
- 第二十八行:used_point是字幕左上角点的坐标;
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)