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连接mysql并提交mysql事务示例
Mar 05 Python
9种python web 程序的部署方式小结
Jun 30 Python
对Python新手编程过程中如何规避一些常见问题的建议
Apr 01 Python
Python学习小技巧之列表项的拼接
May 20 Python
Python实现返回数组中第i小元素的方法示例
Dec 04 Python
Python 字符串与二进制串的相互转换示例
Jul 23 Python
使用Django开发简单接口实现文章增删改查
May 09 Python
python实现统计文本中单词出现的频率详解
May 20 Python
django 连接数据库出现1045错误的解决方式
May 14 Python
Python Switch Case三种实现方法代码实例
Jun 18 Python
使用darknet框架的imagenet数据分类预训练操作
Jul 07 Python
python如何支持并发方法详解
Jul 25 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用户注册页面利用js进行表单验证具体实例
2013/10/17 PHP
PHP的pcntl多进程用法实例
2015/03/19 PHP
PHP删除数组中指定下标的元素方法
2018/02/03 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
2019/11/21 PHP
用正则xmlHttp实现的偷(转)
2007/01/22 Javascript
GWT中复制到剪贴板 js+flash实现复制 兼容性比较好
2010/03/07 Javascript
javascript使用onclick事件改变选中行的颜色
2013/12/30 Javascript
Javascript基础教程之数据类型 (数值 Number)
2015/01/18 Javascript
IE中鼠标经过option触发mouseout的解决方法
2015/01/29 Javascript
浅谈Node.js中的定时器
2015/06/18 Javascript
js跨域请求数据的3种常用的方法
2015/12/01 Javascript
详细谈谈javascript的对象
2016/07/31 Javascript
最原始的jQuery注册验证方式
2016/10/11 Javascript
node.js 和HTML5开发本地桌面应用程序
2016/12/13 Javascript
微信小程序实现实时圆形进度条的方法示例
2017/02/24 Javascript
微信小程序之发送短信倒计时功能
2017/08/30 Javascript
浅谈Vue SSR 的 Cookies 问题
2017/11/20 Javascript
详解VUE2.X过滤器的使用方法
2018/01/11 Javascript
微信小程序实现登录遮罩效果
2018/11/01 Javascript
JS开发 富文本编辑器TinyMCE详解
2019/07/19 Javascript
python定时器使用示例分享
2014/02/16 Python
python实现在windows下操作word的方法
2015/04/28 Python
详谈python read readline readlines的区别
2017/09/22 Python
python深度优先搜索和广度优先搜索
2018/02/07 Python
numpy 进行数组拼接,分别在行和列上合并的实例
2018/05/08 Python
Python绘制正余弦函数图像的方法
2018/08/28 Python
Python实现手势识别
2020/10/21 Python
有关HTML5 Video对象的ontimeupdate事件(Chrome上无效)的问题
2013/07/19 HTML / CSS
国际知名设计师时装商店:Coggles
2016/09/05 全球购物
在线吉他课程,学习如何弹吉他:Fender Play
2019/02/28 全球购物
SQL数据库笔试题
2016/03/08 面试题
Linux文件系统类型
2012/02/15 面试题
幼儿园元旦亲子活动方案
2014/02/17 职场文书
2015年保险公司个人工作总结
2015/05/22 职场文书
委托书范本格式
2019/04/18 职场文书
SpringBoot整合minio快速入门教程(代码示例)
2022/04/03 Java/Android