python cv2绘制中文乱码问题

因为使用cv2.putText() 只能显示英文字符,中文会出现乱码问题,

因此使用PIL在图片上绘制添加中文,可以指定字体文件。

思路:

OpenCV图片格式转换成PIL的图片格式;
使用PIL绘制文字;
PIL图片格式转换成OpenCV的图片格式;
def cv2ImgAddText(img, text, left, top, textColor=(0, 255, 0), textSize=20):
    if (isinstance(img, numpy.ndarray)):  # 判断是否OpenCV图片类型
        img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
    # 创建一个可以在给定图像上绘图的对象
    draw = ImageDraw.Draw(img)
    # 字体的格式
    fontStyle = ImageFont.truetype(
        "font/simsun.ttc", textSize, encoding="utf-8")
    # 绘制文本
    draw.text((left, top), text, textColor, font=fontStyle)
    # 转换回OpenCV格式
    return cv2.cvtColor(numpy.asarray(img), cv2.COLOR_RGB2BGR)

效果:
在这里插入图片描述
我在做人脸识别时遇到了这个问题,特别记下来

你可能感兴趣的:(python,python,opencv,乱码)