python 解决cv2绘制中文乱码问题


Posted in Python onDecember 23, 2019

因为使用cv2.putText() 只能显示英文字符,中文会出现乱码问题,

因此使用PIL在图片上绘制添加中文,可以指定字体文件。

大体思路:

OpenCV图片格式转换成PIL的图片格式;

使用PIL绘制文字;

PIL图片格式转换成OpenCV的图片格式;

具体实现:

# coding=utf-8
# cv2解决绘制中文乱码
 
import cv2
import numpy
from PIL import Image, ImageDraw, ImageFont

 
def cv2ImgAddText(img, text, left, top, textColor=(0, 255, 0), textSize=20):
  if (isinstance(img, numpy.ndarray)): # 判断是否OpenCV图片类型
    img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
  # 创建一个可以在给定图像上绘图的对象
  draw = ImageDraw.Draw(img)
  # 字体的格式
  fontStyle = ImageFont.truetype(
    "font/simsun.ttc", textSize, encoding="utf-8")
  # 绘制文本
  draw.text((left, top), text, textColor, font=fontStyle)
  # 转换回OpenCV格式
  return cv2.cvtColor(numpy.asarray(img), cv2.COLOR_RGB2BGR)


if __name__ == '__main__':
  img = cv2ImgAddText(cv2.imread('img1.jpg'), "大家好,我是片天边的云彩", 10, 65, (0, 0 , 139), 20)
  cv2.imshow('show', img)
  if cv2.waitKey(100000) & 0xFF == ord('q'):
    cv2.destroyAllWindows()

效果展示:

python 解决cv2绘制中文乱码问题

以上这篇python 解决cv2绘制中文乱码问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 条件判断的缩写方法
Sep 06 Python
跟老齐学Python之玩转字符串(1)
Sep 14 Python
Python字符串中查找子串小技巧
Apr 10 Python
python模块导入的细节详解
Dec 10 Python
python实现五子棋小游戏
Mar 25 Python
24式加速你的Python(小结)
Jun 13 Python
TensorFlow2.0:张量的合并与分割实例
Jan 19 Python
安装python3.7编译器后如何正确安装opnecv的方法详解
Jun 16 Python
使用python库xlsxwriter库来输出各种xlsx文件的示例
Sep 01 Python
python与idea的集成的实现
Nov 20 Python
Python爬虫之Selenium鼠标事件的实现
Dec 04 Python
让文件路径提取变得更简单的Python Path库
May 27 Python
python 实现查询Neo4j多节点的多层关系
Dec 23 #Python
python 多进程队列数据处理详解
Dec 23 #Python
python3实现从kafka获取数据,并解析为json格式,写入到mysql中
Dec 23 #Python
python读取ini配置文件过程示范
Dec 23 #Python
python读取Kafka实例
Dec 23 #Python
Python3 使用selenium插件爬取苏宁商家联系电话
Dec 23 #Python
kafka监控获取指定topic的消息总量示例
Dec 23 #Python
You might like
PHP连接SQLServer2005 的问题解决方法
2010/07/19 PHP
php无限分类且支持输出树状图的详细介绍
2013/06/19 PHP
PHP字符串的连接的简单实例
2013/12/30 PHP
用 Composer构建自己的 PHP 框架之使用 ORM
2014/10/30 PHP
php使用unset()删除数组中某个单元(键)的方法
2015/02/17 PHP
支付宝支付开发――当面付条码支付和扫码支付实例
2016/11/04 PHP
PHP提取字符串中的手机号正则表达式怎么写
2017/07/17 PHP
基于Laravel 多个中间件的执行顺序详解
2019/10/21 PHP
javascript 关于# 和 void的区别分析
2009/10/26 Javascript
ASP.NET中基于JQUERY的高性能的TreeView补充
2011/02/23 Javascript
jQuery中;function($,undefined) 前面的分号的用处
2014/12/17 Javascript
JS实现往下不断流动网页背景的方法
2015/02/27 Javascript
细说webpack源码之compile流程-rules参数处理技巧(2)
2017/12/26 Javascript
JS实现不用中间变量temp 实现两个变量值得交换方法
2018/02/04 Javascript
react 应用多入口配置及实践总结
2018/10/17 Javascript
原生javascript运动函数的封装示例【匀速、抛物线、多属性的运动等】
2020/02/23 Javascript
在react-antd中弹出层form内容传递给父组件的操作
2020/10/24 Javascript
使用python编写批量卸载手机中安装的android应用脚本
2014/07/21 Python
使用Python的Twisted框架构建非阻塞下载程序的实例教程
2016/05/25 Python
python读取excel表格生成erlang数据
2017/08/26 Python
python实现比较文件内容异同
2018/06/22 Python
Python 访问限制 private public的详细介绍
2018/10/16 Python
django celery redis使用具体实践
2019/04/08 Python
六行python代码的爱心曲线详解
2019/05/17 Python
Python基于百度AI实现OCR文字识别
2020/04/02 Python
python打包生成so文件的实现
2020/10/30 Python
FORZIERI澳大利亚站:全球顶级奢华配饰精品店
2016/12/31 全球购物
采购部部长岗位职责
2014/02/06 职场文书
公司承诺书怎么写
2014/05/24 职场文书
详细的本科生职业生涯规划范文
2014/09/16 职场文书
群众路线教师自我剖析材料
2014/09/29 职场文书
2015年党员发展工作总结
2015/05/13 职场文书
话题作文之呼唤
2019/12/18 职场文书
springboot集成flyway自动创表的详细配置
2021/06/26 Java/Android
MySQL中一条update语句是如何执行的
2022/03/16 MySQL
Python自动化实战之接口请求的实现
2022/05/30 Python