博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
opencv3.2将中文输出到图片上
阅读量:5734 次
发布时间:2019-06-18

本文共 837 字,大约阅读时间需要 2 分钟。

opencv自带的putText函数无法输出utf8类型的字符,因此无法将中文打印到图片上。用的freetype可以实现中文输出,但是需要将字符解码转码比较麻烦,而Pillow的Image函数输出中文则相对容易些,因此这里的做法是现将图片从从cv2格式转到PIL格式,加上中文后再转成cv2格式输出。

1. 下载中文字体库

这里可以参考之前matplotlib输出中文的的第一部分。

2. cv2转PIL

import Image, ImageDraw, ImageFont, cv2cap = cv2.VideoCapture(0) # 从视频流中截取图片ret, im = cap.read()cv2_im = cv2.cvtColor(im, cv2.COLOR_BGR2RGB) # cv2和PIL中颜色的hex码的储存顺序不同pil_im = Image.fromarray(cv2_im)

3. PIL图片上打印中文

draw = ImageDraw.Draw(pil_im) # 括号中为需要打印的canvas,这里就是在图片上直接打印font = ImageFont.truetype("simhei.ttf", 20, encoding="utf-8) # 第一个参数为字体文件路径,第二个为字体大小draw.text((0, 0), "eg:打印在这里", (0, 0, 255), font=font) # 第一个参数为打印的坐标,第二个为打印的文本,第三个为字体颜色,第四个为字体

4. PIL图片转cv2

import numpy as npcv2_text_im = cv2.cvrColor(np.array(pil_im), cv2.COLOR_RGB2BGR))cv2.imshow("Video", cv2_text_im)

参考

转载于:https://www.cnblogs.com/arkenstone/p/6961453.html

你可能感兴趣的文章
微信分销系统商城营销5大重点
查看>>
求职准备 - 收藏集 - 掘金
查看>>
【Java】类的循环初始化是否会引起死锁?
查看>>
htm5新特性(转)
查看>>
前端面试之Css篇
查看>>
Linux-Centos启动流程
查看>>
php 设计模式
查看>>
后端技术精选 - 收藏集 - 掘金
查看>>
Laravel 服务容器
查看>>
6天面试、斩获6家硅谷巨头Offer,我是如何做到的?
查看>>
TensorFlow 1.0已死,TensorFlow 2.0万岁
查看>>
Scala模式匹配的亮点——Martin Odersky访谈(四)
查看>>
mac安装kubernetes并运行echoserver
查看>>
多页架构的前后端分离方案(webpack+express)
查看>>
AWS推出深度学习容器,简化AI程序开发
查看>>
算法(第4版) Chapter 1
查看>>
前端技术选型的遗憾和经验教训
查看>>
“亲切照料”下的领域驱动设计
查看>>
GIT
查看>>
微软宣布公开预览其内容分发网络
查看>>