Python OpenCV实现图片上输出中文


Posted in Python onJanuary 22, 2018

OpenCV中在图片上输出中文一般需要借助FreeType库实现。FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件。但使用FreeType需要下载库并重新编译,过程麻烦一点。

在Python中,可以借助PIL(Python Imaging Library)模块实现,相对简单很多,需要做的只是对图像进行OpenCV格式和PIL格式的相互转换。

# -*- coding: utf-8 -*- 
import cv2 
import numpy 
from PIL import Image, ImageDraw, ImageFont 
 
if __name__ == '__main__': 
 
 img_OpenCV = cv2.imread('01.jpg') 
 # 图像从OpenCV格式转换成PIL格式 
 img_PIL = Image.fromarray(cv2.cvtColor(img_OpenCV, cv2.COLOR_BGR2RGB)) 
 
 # 字体 字体*.ttc的存放路径一般是: /usr/share/fonts/opentype/noto/ 查找指令locate *.ttc 
 font = ImageFont.truetype('NotoSansCJK-Black.ttc', 40) 
 # 字体颜色 
 fillColor = (255,0,0) 
 # 文字输出位置 
 position = (100,100) 
 # 输出内容 
 str = '在图片上输出中文' 
 
 # 需要先把输出的中文字符转换成Unicode编码形式 
 if not isinstance(str, unicode): 
  str = str.decode('utf8') 
 
 draw = ImageDraw.Draw(img_PIL) 
 draw.text(position, str, font=font, fill=fillColor) 
 # 使用PIL中的save方法保存图片到本地 
 # img_PIL.save('02.jpg', 'jpeg') 
 
 # 转换回OpenCV格式 
 img_OpenCV = cv2.cvtColor(numpy.asarray(img_PIL),cv2.COLOR_RGB2BGR) 
 cv2.imshow("print chinese to image",img_OpenCV) 
 cv2.waitKey() 
 cv2.imwrite('03.jpg',img_OpenCV)

输出效果:

 Python OpenCV实现图片上输出中文

字体 *.ttc的存放路径一般是: /usr/share/fonts/opentype/noto/  

可以使用locate指令查找本机上已经下载的字体:

Python OpenCV实现图片上输出中文

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python读取Json字典写入Excel表格的方法
Jan 03 Python
python3.6+django2.0开发一套学员管理系统
Mar 03 Python
Python操作MySQL数据库的方法
Jun 20 Python
python集合是否可变总结
Jun 20 Python
Python为何不能用可变对象作为默认参数的值
Jul 01 Python
python使用递归的方式建立二叉树
Jul 03 Python
python多继承(钻石继承)问题和解决方法简单示例
Oct 21 Python
python正则表达式匹配IP代码实例
Dec 28 Python
Python判断字符串是否为空和null方法实例
Apr 26 Python
详解Python 最短匹配模式
Jul 29 Python
python 中[0]*2与0*2的区别说明
May 10 Python
简单谈谈Python面向对象的相关知识
Jun 28 Python
python批量替换页眉页脚实例代码
Jan 22 #Python
python解析html提取数据,并生成word文档实例解析
Jan 22 #Python
Python复制Word内容并使用格式设字体与大小实例代码
Jan 22 #Python
Python读取word文本操作详解
Jan 22 #Python
python导出hive数据表的schema实例代码
Jan 22 #Python
Python的SimpleHTTPServer模块用处及使用方法简介
Jan 22 #Python
一道python走迷宫算法题
Jan 22 #Python
You might like
PHP中用接口、抽象类、普通基类实现“面向接口编程”与“耦合方法”简述
2011/03/23 PHP
php跨域cookie共享使用方法
2014/02/20 PHP
php中pcntl_fork创建子进程的方法实例
2019/03/14 PHP
javascript语句中的CDATA标签的意义
2007/05/09 Javascript
JavaScript 字符串连接性能优化
2008/12/20 Javascript
jQuery中使用了document和window哪些属性和方法小结
2011/09/13 Javascript
Jquery 模板数据绑定插件的使用方法详解
2013/07/08 Javascript
jquery跟js初始化加载的多种方法及区别介绍
2014/04/02 Javascript
Egret引擎开发指南之发布项目
2014/09/03 Javascript
封装好的一个万能检测表单的方法
2015/01/21 Javascript
js实现点击链接后延迟3秒再跳转的方法
2015/06/05 Javascript
jQuery自定义图片缩放拖拽插件imageQ实现方法(附demo源码下载)
2016/05/27 Javascript
利用jQuery对无序列表排序的简单方法
2016/10/16 Javascript
用最简单的方法判断JavaScript中this的指向(推荐)
2017/09/04 Javascript
详解使用Visual Studio Code对Node.js进行断点调试
2017/09/14 Javascript
JavaScript设计模式之工厂模式简单实例教程
2018/07/03 Javascript
vue自定义指令之面板拖拽的实现
2019/04/14 Javascript
[01:07:20]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第二场 2月2日
2021/03/11 DOTA
Python脚本实现格式化css文件
2015/04/08 Python
使用python实现生成用户信息
2017/03/20 Python
python 将有序数组转换为二叉树的方法
2019/03/26 Python
将python2.7添加进64位系统的注册表方式
2019/11/20 Python
Python爬虫库requests获取响应内容、响应状态码、响应头
2020/01/25 Python
python GUI库图形界面开发之PyQt5动态加载QSS样式文件
2020/02/25 Python
python 获取当前目录下的文件目录和文件名实例代码详解
2020/03/10 Python
安装不同版本的tensorflow与models方法实现
2021/02/20 Python
德国圣伯纳德草药屋:Kräuterhaus Sanct Bernhard(有中文站)
2018/08/05 全球购物
mysql有关权限的表都有哪几个
2015/04/22 面试题
简历的自我评价
2014/02/03 职场文书
党的群众教育实践活动实施方案
2014/06/12 职场文书
局领导领导班子四风对照检查材料
2014/09/27 职场文书
干部作风建设心得体会
2014/10/22 职场文书
2014年政协委员工作总结
2014/12/01 职场文书
三八妇女节寄语
2015/02/27 职场文书
纪录片信仰观后感
2015/06/08 职场文书
Mysql数据库表中为什么有索引却没有提高查询速度
2022/02/24 MySQL