PIL画图只有黑白色

背景

项目上需要对人工标注的图片上的框进行校对,验证有无漏框、错框等问题。尝试使用opencv把框信息画出来,但是中文无法写到图片上,么得办法,只能转战PIL。但是用PIL之后出现部分图画出来的框写出来的字只有黑白色。因为第一次使用这个库,对图像知识不了解,网上查了资料解决了。

原因

原图的mode是L,所以无论如何设置draw.ink都无法画出彩色的图像框。

解决

转换原图为RGB格式即可。

部分代码如下:

with Image.open(src_pic) as image:
    if image.mode != "RGB":  # 这个判断太重要了,要是灰度图片不转换的话文字颜色、框颜色都不会生效
        image = image.convert("RGB")
    draw = ImageDraw.Draw(image)
    ziti = r'C:WindowsFontssimkai.ttf'
    zihao = 50
    font = ImageFont.truetype(ziti, zihao)
    # 画矩形:起止坐标点,线宽度,线颜色
    draw.rectangle([(35, 87), (362, 453)], width=6, outline='blue')
    # 写文本:起点坐标,内容,颜色,字体
    draw.text(((40, 90), '这是文本', (255, 0, 0), font=font)

关于图像的模式mode参考文档:https://blog.csdn.net/u013066730/article/details/102832597

原文地址:https://www.cnblogs.com/wjlv/p/15336814.html