解决方法
先转成PIL的图片格式,再用PIL绘制字体,然后再转回opencv图片格式.。
simsun.ttc需要自己去下载然后放在当前文件夹下。
定义方法
from PIL import Image, ImageDraw, ImageFont
def cv2ImgAddText(img, text, left, top, textColor=(0, 255, 0), textSize=20):
if (isinstance(img, np.ndarray)): # 判断是否OpenCV图片类型
img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
# 创建一个可以在给定图像上绘图的对象
draw = ImageDraw.Draw(img)
# 字体的格式
fontStyle = ImageFont.truetype(
"simsun.ttc", textSize, encoding="utf-8")
# 绘制文本
draw.text((left, top), text, textColor, font=fontStyle)
# 转换回OpenCV格式
return cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)
调用
im0 = cv2ImgAddText(im0, f"有效数量:{num}\n均值 :{average_length:.2f}cm\n标准差 :{std_length:.2f}cm", 0, 10, (255, 255, 255), 150)
效果