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/env python
# -*- coding: utf-8 -*-

本文介绍了如何在Python2.x版本的OpenCV2.x中解决中文输出问题,由于OpenCV2.x本身不支持中文,可以借助freetype库来实现。首先,详细讲解了freetype的安装步骤,接着讨论了Python2.x中文编码处理的注意事项,包括字符串类型的转换。最后,给出了代码封装的建议,并提醒注意不同字体对中文显示的影响。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



