yoloV5 6.0 中文标签显示

最近在做有关yolo的小项目,需要显示中文标签,

这里以yolov5 6.0 版本为例,需要修改的地方包括3个文件:

1.utils文件夹下的general.py

由于中文显示对应的编码格式为‘utf-8’,因此将以下代码:

 with open(data, errors='ignore') as f:

 修改为:

 with open(data, errors='ignore',encoding='utf-8') as f:

注:可使用crtl+F进行关键字查找,较为方便。

2.utils文件夹下的metrics.py

将以下代码:

sn.set(font_scale=1.0 if nc < 50 else 0.8)

 修改为:

sn.set(font='SimHei',font_scale=1.0 if nc < 50 else 0.8)

3.utils文件夹下的plots.py

在此文件开头处添加以下代码:

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

并准备一种中文字体,我这里使用的是黑体(SimHei.ttf),将其放在你matplotlib库的安装路径下mpl-data\fonts下,我的路径为D:\anaconda\Lib\site-packages\matplotlib\mpl-data\fonts\ttf

         

然后将Annotator类部分代码进行修改,

 将以下代码:

def __init__(self, im, line_width=None, font_size=None, font='Arial.ttf', pil=False, example='abc'):

 修改为:(其中font后是中文字体存放的路径,每个人对应的路径不同)

    def __init__(self, im, line_width=None, font_size=None,
                 font='D:/anaconda/Lib/site-packages/matplotlib/mpl-data/fonts/ttf/SimHei.ttf',
                 pil=False, example='abc'):

  将以下代码:

self.font = check_pil_font(font='Arial.Unicode.ttf' if non_ascii else font,
                          size=font_size or max(round(sum(self.im.size) / 2 * 0.035), 12))

 修改为:(其中font后是中文字体存放的路径,每个人对应的路径不同)

self.font = check_pil_font(font='D:/anaconda/Lib/site-packages/matplotlib/mpl-data/fonts/ttf/SimHei.ttf' if non_ascii else font,size=font_size or max(round(sum(self.im.size) / 2 * 0.035), 12))

到此为止,可实现中文标签的显示。

本文参考YOLOv5 完美实现中文标签显示_不佛的博客-CSDN博客_yolov5中文标签

 
 

猜你喜欢

转载自blog.csdn.net/qq_48194187/article/details/126695111