findfont: Font family ‘Noto Serif CJK JP‘ not found

文章讲述了在使用mmocr时遇到的关于找不到NotoSerifCJKJP字体的警告问题,通过下载、安装NotoSerifCJKJP字体,将其放入matplotlib字体目录,以及清理缓存或修改配置文件等方式解决matplotlib无法识别中文字体的问题。
摘要由CSDN通过智能技术生成

起因

运行mmocr推断程序的时候,标注目标框的时候出现的问题
找不到字体
这个warning是找不到’Noto Serif CJK JP’字体
中文字符找不到
不仅找不到字体,中文的字符也只能长方形框来表示了,这非常不利于结果可视化!

解决方法

原因出在matplotlib找不到中文字体,我分三步解决这个问题

1、下载Noto Serif CJK JP字体

noto字体github地址上看到很多字体,但是Language-specific Variable Fonts以及Region-specific Subset Variable Fonts的字体不要选!!windows不支持。
下载链接
OTF|TTF中选择一个下载,我这里选择TTF下载
下载完成后,安装字体。

2、字体保存到matplotlib下的fonts\ttf文件夹下

查找字体路径

import matplotlib

# 查找字体路径
print(matplotlib.matplotlib_fname())

结果:
D:\anaconda\envs\yolov5\Lib\site-packages\matplotlib\mpl-data\matplotlibrc

将安装好的字体复制到D:\anaconda\envs\yolov5\Lib\site-packages\matplotlib\mpl-data\fonts\ttf文件夹下,这里的地址是你的字体路径地址

3、删除.matplotlib

linux系统下matplotlib在~/.cache文件夹下,直接rm -rf ~/.cache/matplotlib
windows下在C:\Users\[你的用户名]下.matplotlib,直接删除

结果

运行python程序,不报错了

题外

1、可以通过手动修改matplotlib/fontlist-v330.json文件中的字体名称来实现:命名为楷体的字体,实际中matplotlib中采用的却是黑体的骚操作
楷体变黑体
2、可以修改D:\anaconda\envs\yolov5\Lib\site-packages\matplotlib\mpl-data\matplotlibrc这个文件,添加你想呈现的字体类型。
Ctrl+F找sans-serif,将注释去掉,添加自己想添加的字体
修改默认
这里font.sans-serif会优先选择前面的字体。注意,SimHei这个字体的添加和前面Noto Serif CJK JP的字体添加步骤基本一致。
3、fonts\ttf文件夹下可以放除.ttf格式的字体文件,而且运行时不报错。

ttc
这里的.ttc也可行
4、RuntimeError: In FT2Font: Can not load face
报错信息
这个报错信息不一定是字体文件损坏导致的,也有可能是你的系统不支持这种字体。
NotoSerifJP-VF.ttf这种字体可以在FontLab中正常打开、正常显示,但是windows系统不支持。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值