需求来源
由于cv2.cvtColor
显示中文字符会出现乱码,所以寻找一种代替的解决方法。
import cv2
import numpy as np
from PIL import Image, ImageDraw, ImageFont
def draw_box_string(img,x,y,string):
"""
img: read by cv;
x,y:字符起始绘制的位置;
string: what you want to draw in img;
return: img
"""
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img = Image.fromarray(img)
draw = ImageDraw.Draw(img)
# simhei.ttf 是字体,你如果没有字体,需要下载
font = ImageFont.truetype("simhei.ttf", 50, encoding="utf-8")
draw.text((x, y - 50), string, (255, 255, 255), font=font)
img = cv2.cvtColor(np.array(img), cv2.COLOR_RGB2BGR)
return img
if __name__ == '__main__':
img = draw_box_string(cv2.imread('dog.jpg'), 100,100, "经典测试图")
cv2.imshow('show', img)
if cv2.waitKey(0) & 0xFF == ord('q'):
cv2.destroyAllWindows()
测试
如果阅读本文对你有用,欢迎关注点赞评论收藏呀!!!
2021年3月13日17:30:49