opencv不支持在图像上写入中文,需要使用PIL实现,代码:
def put_chinese_on_img(img, text, loc):
"""
在图像上添加中文字符
:param img: 图像
:param text: 文本
:param loc: 位置
:return:
"""
cv2img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # cv2和PIL中颜色的hex码的储存顺序不同
pilimg = Image.fromarray(cv2img)
# PIL图片上打印汉字
draw = ImageDraw.Draw(pilimg) # 图片上打印
font = ImageFont.truetype("three_party/subtitleDetection/model/simhei.ttf", 40, encoding="utf-8") # 参数1:字体文件路径,参数2:字体大小
draw.text(loc, text, (255, 0, 0), font=font) # 参数1:打印坐标,参数2:文本,参数3:字体颜色,参数4:字体
# PIL图片转cv2 图片
cv2charimg = cv2.cvtColor(np.array(pilimg), cv2.COLOR_RGB2BGR)
return cv2charimg