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 相关文章推荐
浅析AST抽象语法树及Python代码实现
Jun 06 Python
详解python3中zipfile模块用法
Jun 18 Python
Python3爬虫使用Fidder实现APP爬取示例
Nov 27 Python
Python实现元素等待代码实例
Nov 11 Python
Python中remove漏删和索引越界问题的解决
Mar 18 Python
基于python图像处理API的使用示例
Apr 03 Python
pycharm无法安装第三方库的问题及解决方法以scrapy为例(图解)
May 09 Python
keras 解决加载lstm+crf模型出错的问题
Jun 10 Python
python递归函数用法详解
Oct 26 Python
基于Python采集爬取微信公众号历史数据
Nov 27 Python
Pytorch数据读取之Dataset和DataLoader知识总结
May 23 Python
pandas进行数据输入和输出的方法详解
Mar 23 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
NT IIS下用ODBC连接数据库
2006/10/09 PHP
Erlang的运算符(比较运算符,数值运算符,移位运算符,逻辑运算符)
2012/07/23 PHP
WordPress中Gravatar头像缓存到本地及相关优化的技巧
2015/12/19 PHP
php函数传值的引用传递注意事项分析
2016/06/25 PHP
php常用字符函数实例小结
2016/12/29 PHP
PHP获取数组中指定的一列实例
2017/12/27 PHP
PHP Swoole异步读取、写入文件操作示例
2019/10/24 PHP
PHP safe_mode开启对于PHP系统函数有什么影响
2020/11/10 PHP
浅析jQuery(function(){})与(function(){})(jQuery)之间的区别
2014/01/09 Javascript
javascript中的self和this用法小结
2014/02/08 Javascript
jQuery之选项卡的简单实现
2014/02/28 Javascript
jQuery中的ready函数与window.onload谁先执行
2016/06/21 Javascript
微信小程序slider组件使用详解
2018/01/31 Javascript
Vue修改mint-ui默认样式的方法
2018/02/03 Javascript
解析Json字符串的三种方法日常常用
2018/05/02 Javascript
angularJs select绑定的model取不到值的解决方法
2018/10/08 Javascript
vue多层嵌套路由实例分析
2019/03/19 Javascript
使用Promise封装小程序wx.request的实现方法
2019/11/13 Javascript
微信小程序开发(一):服务器获取数据列表渲染操作示例
2020/06/01 Javascript
jquery实现抽奖功能
2020/10/22 jQuery
[01:50]WODOTA制作 DOTA2中文宣传片《HERO》
2013/04/28 DOTA
[53:52]EG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
一个基于flask的web应用诞生(1)
2017/04/11 Python
Python调用百度根据经纬度查询地址的示例代码
2019/07/07 Python
python filecmp.dircmp实现递归比对两个目录的方法
2020/05/22 Python
零基础学Python之前需要学c语言吗
2020/07/21 Python
Python 实现键盘鼠标按键模拟
2020/11/18 Python
Pat McGrath Labs官网:世界上最有影响力的化妆师推出的彩妆品牌
2018/01/07 全球购物
澳大利亚婴儿喂养品牌:Cherub Baby
2018/11/01 全球购物
茶叶生产计划书
2014/01/10 职场文书
2014年高考决心书
2014/03/11 职场文书
好听的队名和口号
2014/06/09 职场文书
假释思想汇报范文
2014/10/11 职场文书
违章停车检讨书
2014/10/21 职场文书
公务员群众路线心得体会
2014/11/03 职场文书
质量保证书
2015/01/17 职场文书