MacOS下matplotlib画图添加中文字体支持

最近准备使用Mac book pro上使用 python学习计算机视觉,花了一天时间才配置好环境,安装上了Numpy、PIL、Matplotlib、Opencv等库。在画图的时候出现了问题,Matplotlib上没有中文字体支持,显示出来的图片上有中文字体的地方都变成了方格。在网上找了很多教程,很多都不适合Mac系统,最后终于弄好。过程如下:

  1. 网上下载中文字体支持,如SimHei.tff等,记下SimHei.tff的安放目录。
  2. python前半部分写上以下代码,fname写上SimHei.tff的安放目录
    # -*- coding: utf-8 -*-
    import matplotlib as mpl
    font = mpl.font_manager.FontProperties(fname='SimHei.ttf')
  3. 在画图的时候写上:
    title(u'原图', fontproperties=font)
  4. 这样显示的图片上就可以有中文字体了,教程上说在中文字体前要加上u,经过试验,不加u也没有报错。
  5. 示例:
# -*- coding: utf-8 -*-
import cv2
import numpy
from pylab import *
import matplotlib as mpl
font = mpl.font_manager.FontProperties(fname='SimHei.ttf')
# 读入图像
filename = 'lena.jpg'
im = cv2.imread(filename)
# 显示原图
fig = plt.figure()
plt.gray()
imshow(im)
title(u'原图', fontproperties=font)
axis('off')

结果展示:
这里写图片描述
6. 这种方法在实际使用时每次都需要写代码,网上教程中一劳永逸的方法在我的电脑上不适用,所以就先这样开始我的计算机视觉之旅吧,后期碰到好的方法了再更改。
7. 终于一次性的更改字体了,不用每次都使用fontproperties=font了,当碰到难以解决的问题的时候先放一放,只要你有一颗学习的心,不知道什么时候问题就迎刃而解了。
8. 具体步骤为:
(1)找到~python安装路径/site-packages/matplotlib/mpl-data/matplotlibrc文件。
(2)找到font.family 、font.sans-serif ,去掉前面的#,并在font.sans-serif冒号后面加上SimHei;
(3)同时找到axes.unicode_minus,将True改为False,这样可以解决负号’-‘显示为方块的问题。保存退出。
(4)接下来在每个.py程序的开头,添加上如下代码,就大功告成了:

from matplotlib.font_manager import _rebuild
_rebuild()
#防止中文乱码问题
mpl.rcParams['font.sans-serif']=[u'SimHei']
mpl.rcParams['axes.unicode_minus']=False

猜你喜欢

转载自blog.csdn.net/wugui1111/article/details/80699249