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 相关文章推荐
Django中使用group_by的方法
May 26 Python
python函数的5种参数详解
Feb 24 Python
Python实现统计文本文件字数的方法
May 05 Python
Python第三方库face_recognition在windows上的安装过程
May 03 Python
Python为何不能用可变对象作为默认参数的值
Jul 01 Python
python django 原生sql 获取数据的例子
Aug 14 Python
pytorch 自定义参数不更新方式
Jan 06 Python
基于python实现坦克大战游戏
Oct 27 Python
Python 虚拟环境工作原理解析
Dec 24 Python
Python基础教程,Python入门教程(超详细)
Jun 24 Python
Pyqt5将多个类组合在一个界面显示的完整示例
Sep 04 Python
Python matplotlib多个子图绘制整合
Apr 13 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中处理模拟rewrite 效果
2006/12/09 PHP
php常用Output和ptions/Info函数集介绍
2013/06/19 PHP
ThinkPHP3.1新特性之命名范围的使用
2014/06/19 PHP
php.ini中date.timezone设置详解
2016/11/20 PHP
php之header的不同用法总结(实例讲解)
2017/11/28 PHP
ASP小贴士/ASP Tips javascript tips可以当桌面
2009/12/10 Javascript
JavaScript实现在数组中查找不同顺序排列的字符串
2014/09/26 Javascript
JavaScript生成的动态下雨背景效果实现方法
2015/02/25 Javascript
jQuery封装的tab选项卡插件分享
2015/06/16 Javascript
jQuery实现模拟marquee标签效果
2015/07/14 Javascript
Angular页面间切换及传值的4种方法
2016/11/04 Javascript
概述javascript在Google IE中的调试技巧
2016/11/24 Javascript
jquery+html仿翻页相册功能
2016/12/20 Javascript
Bootstrap免费字体和图标网站(值得收藏)
2017/03/16 Javascript
javascript 初学教程及五子棋小程序的简单实现
2017/07/04 Javascript
AngularJS常见过滤器用法实例总结
2017/07/06 Javascript
浅谈ajax在jquery中的请求和servlet中的响应
2018/01/22 jQuery
JavaScript实现计算多边形质心的方法示例
2018/01/31 Javascript
clipboard.js在移动端复制失败的解决方法
2018/06/13 Javascript
浅析vue插槽和作用域插槽的理解
2019/04/22 Javascript
基于Element的组件改造的树形选择器(树形下拉框)
2020/02/27 Javascript
通过实例解析jQ Ajax操作相关原理
2020/09/23 Javascript
微信小程序自定义底部弹出框动画
2020/11/18 Javascript
linux系统使用python监测系统负载脚本分享
2014/01/15 Python
python 递归深度优先搜索与广度优先搜索算法模拟实现
2018/10/22 Python
学习python可以干什么
2019/02/26 Python
python编写计算器功能
2019/10/25 Python
python函数局部变量、全局变量、递归知识点总结
2019/11/15 Python
python flask中动态URL规则详解
2019/11/22 Python
详解Python Opencv和PIL读取图像文件的差别
2019/12/27 Python
日本运动品牌美津浓官方购物网站:MIZUNO SHOP
2016/08/21 全球购物
应届毕业生自我鉴定范文
2013/12/27 职场文书
中文师范生自荐信
2014/01/30 职场文书
2015国庆节感想
2015/08/04 职场文书
电台广播稿范文
2015/08/19 职场文书
Node-Red实现MySQL数据库连接的方法
2021/08/07 MySQL