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 PyTorch预训练示例
Feb 11 Python
Python向MySQL批量插数据的实例讲解
Mar 31 Python
在python中使用with打开多个文件的方法
Jan 07 Python
解决python flask中config配置管理的问题
Jul 26 Python
python Pandas如何对数据集随机抽样
Jul 29 Python
python获取array中指定元素的示例
Nov 26 Python
浅谈python之自动化运维(Paramiko)
Jan 31 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
Mar 05 Python
django-orm F对象的使用 按照两个字段的和,乘积排序实例
May 18 Python
Python OpenCV实现测量图片物体宽度
May 27 Python
python制作微博图片爬取工具
Jan 16 Python
pycharm Tab键设置成4个空格的操作
Feb 26 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与浏览器缓存的分析
2013/06/03 PHP
php处理restful请求的路由类分享
2014/02/27 PHP
Yii核心验证器api详解
2016/11/23 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
prototype1.4中文手册
2006/09/22 Javascript
event.keyCode键码值表 附只能输入特定的字符串代码
2009/05/15 Javascript
关于js拖拽上传 [一个拖拽上传修改头像的流程]
2011/07/13 Javascript
Google的跟踪代码 动态加载js代码方法应用
2012/11/12 Javascript
在javascript中关于节点内容加强
2013/04/11 Javascript
jquery实现类似淘宝星星评分功能实例
2014/09/12 Javascript
jQuery ajax 当async为false时解决同步操作失败的问题
2016/11/18 Javascript
JS识别浏览器类型(电脑浏览器和手机浏览器)
2016/11/18 Javascript
JavaScript模板引擎Template.js使用详解
2016/12/15 Javascript
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
2016/12/15 Javascript
js date 格式化
2017/02/15 Javascript
vue组件间通信解析
2017/03/01 Javascript
基于node.js的fs核心模块读写文件操作(实例讲解)
2017/09/10 Javascript
bootstrap时间控件daterangepicker使用方法及各种小bug修复
2017/10/25 Javascript
Vue 配合eiement动态路由,权限验证的方法
2018/09/26 Javascript
JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】
2019/02/18 Javascript
no-vnc和node.js实现web远程桌面的完整步骤
2019/08/11 Javascript
json字符串对象转换代码实例
2019/09/28 Javascript
微信小程序 生成携带参数的二维码
2019/10/23 Javascript
vue 实现cli3.0中使用proxy进行代理转发
2019/10/30 Javascript
[01:28]2014DOTA2国际邀请赛中国区预选赛四大豪门直升机抵达会场
2014/05/24 DOTA
[36:22]VP vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
你应该知道的python列表去重方法
2017/01/17 Python
Python实现的多线程http压力测试代码
2017/02/08 Python
Python 类的特殊成员解析
2018/06/20 Python
pytorch绘制并显示loss曲线和acc曲线,LeNet5识别图像准确率
2020/01/02 Python
服装设计专业毕业生推荐信
2013/11/09 职场文书
直接有效的自我评价
2014/01/11 职场文书
运动会入场词50字
2014/02/20 职场文书
酒店客房服务员岗位职责
2015/04/09 职场文书
Python实现列表拼接和去重的三种方式
2021/07/02 Python
微信小程序 WeUI扩展组件库的入门教程
2022/04/21 Javascript