记一次YOLO8中文标签乱码问题

 报错代码

    self._target(*self._args, **self._kwargs)
  File "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\plotting.py", line 638, in plot_images
    annotator.box_label(box, label, color=color, rotated=is_obb)
  File "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\plotting.py", line 117, in box_label
    w, h = self.font.getsize(label)  # text width, height
  File "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\plotting.py", line 92, in <lambda>
    self.font.getsize = lambda x: self.font.getbbox(x)[2:4]  # text width, height
  File "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\PIL\ImageFont.py", line 195, in getbbox
    width, height = self.font.getsize(text)
UnicodeEncodeError: 'latin-1' codec can't encode character '\u4e08' in position 0: ordinal not in range(256)
annotator.box_label(box, label, color=color, rotated=is_obb)


 省流精简

找到报错信息里的File "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\plotting.py",打开plotting.py,然后找到self.font = imagefont.truetype(str(font),size),把str(font)改成一个可以显示中文的字体即可(我用的是simsun.ttc)


 处理过程

好嘛,不仔细一看还真给吓到了,仔细一看,不就是一个中文乱码问题嘛,再一瞅,哟,我当初做文字图片的数据集的时候好像也遇到过这个问题,好像是 ImageFont.truetype的问题,当时我给他换了一个字体就没事儿了,此时此刻恰如彼时彼刻,于是,我打开了报错路径上的plotting.py文件,进行查看,在92行报错出

找到了一个叫font的属性,于是在 这个报错的上面87行,找到了老朋友(我可真爱它呀)

PS:可能你的不是在87行这里,这时候如果你用的VS那你可以用ctrl+shift+H来打开查找界面,记得把查找范围设置成当前目录,不然可能找不到捏

好好好,小子我来看看你的属性! 

is_ascii的作用是,判断example是否全为空或者全为ASCII(中文自然不在里面),如果是则返回True,这里加一个not,那么如果满足则返回False,那么大概就是,当超出ASCII的时候font就用check_font加载字体“Arial.Unicode.ttf”(如果没找到字体,check_font将帮你下一个)

好嘛,先让我们去看看,这个字体能不能写中文

换个字体看看 

阿弥诺斯!好好好好好好好,好呀,太好了,我这就去plotting里(就报错里那个路径指向的那个plotting)给你改了(simsun.ttc好像是系统自带的字体,大家应该都有的说)

提示,记得看好位置,别改错文件了,或者改之前提前备份更好

别!改!错!文!件!了!!!!!

别!改!错!文!件!了!!!!!

别!改!错!文!件!了!!!!!

PS:可以使用Everything软件对simsun.ttc进行搜索得到它的路径然后填上去,Everything用来找电脑里的文件还是非常好用的,建议整一个反正也不大

库呼呼,搞定

PS:如果出现保存不了或者访问路径被拒绝记得改一下文件属性或者权限,或者等改天我写一篇我处理这些问题的方法贴这里

PS:修改文件的权限方法在这里关于修改文件时的权限与只读修改问题-CSDN博客

 莫得问题运行成功,来看看,最后得到的结果

好,很好,非常好,好的不得了,问题,解决了T^T,接下来,就是接下来的问题拉,现在要做的就是叉会儿腰

  • 36
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值