python图片上写中文,添加字幕

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)

你可能感兴趣的:(Python实现,python)