OpenCV2.x的putText是无法处理中文的(OpenCV3.x中集成了freetype实现中文输出),同样,Python2.x对中文的支持也很差(同样这一情况在Python3.x中得到了改善)。
所以最方便的方法是,两个都换成3.x版本的。。。[捂脸]
freetype的安装
计算机上显示文本的过程大体上是,先将文本转换成一个一个的bitmap,然后再用图形系统将这些bitmap显示出来。freetype是一个开源的字体引擎,它完成的工作即是将字符转换成bitmap。
参考这篇文章和Github项目介绍,首先需要编译安装freetype2
1)到这里下载最新的freetype2,解压缩后进入目录
../configure
make
sudo make install
2)到这里下载freetype-py源代码,解压缩后进入目录
sudo ./setup.py install
这样就算安装好了
Python2.x中文编码的处理
推荐这篇文章
归纳起来就是:Python2.x里有两种字符串类型(str和unicode),可以类比c++里的char和wchar_t
两者可以通过 decode 和 encode 互转
此外需要注意的是,编码正常情况下 print 会打印正确的字符,但pdb观察该变量则是转义符组成的值。这是内部机制的问题,只要print正确就好了
代码封装
建议使用 wqy-zenhei.ttc,测试了freetype自带的 Vera.ttf 和 windows下的 msyh.ttf,部分中文还是会乱码
算法核心参考这篇文章
#! /usr/bin