OpenCV添加文字的方法putText(…),添加英文是没有问题的,但如果你要添加中文就会出现“???”的乱码,需要特殊处理一下。

下文提供封装好的(代码)方法,供OpenCV添加中文使用。

往期目录

视频人脸检测——Dlib版(六)
OpenCV添加中文(五)
图片人脸检测——Dlib版(四)
视频人脸检测——OpenCV版(三)
图片人脸检测——OpenCV版(二)
OpenCV环境搭建(一)
更多更新,欢迎访问我的github:https://github.com/vipstone/faceai

效果预览

实现思路

使用PIL的图片绘制添加中文,可以指定字体文件,那么也就是说使用PIL可以实现中文的输出。

有思路之后,接下来的工作就简单了。

  1. OpenCV图片格式转换成PIL的图片格式;
  2. 使用PIL绘制文字;
  3. PIL图片格式转换成OpenCV的图片格式;

代码分解

OpenCV图片转换为PIL图片格式

img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))

使用PIL绘制文字

draw = ImageDraw.Draw(img)
fontText = ImageFont.truetype("font/simsun.ttc", textSize, encoding="utf-8")
draw.text((left, top), "文字内容", textColor, font=fontText)

字体文件为:simsun.ttc,Windows可以在C:\Windows\Fonts下面查找。

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

cv2.cvtColor(numpy.asarray(img), cv2.COLOR_RGB2BGR)

完整代码

封装好的完整方法

#coding=utf-8
#中文乱码处理import cv2
import numpy
from PIL import Image, ImageDraw, ImageFontdef 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)fontText = ImageFont.truetype("font/simsun.ttc", textSize, encoding="utf-8")draw.text((left, top), text, textColor, font=fontText)return cv2.cvtColor(numpy.asarray(img), cv2.COLOR_RGB2BGR)

代码调用

img = cv2ImgAddText(img, "大家好,我是星爷", 140, 60, (255, 255, 0), 20)

OpenCV添加中文(五)相关推荐

  1. opencv在图片上添加中文汉字(c++以及python)

    文章目录 一. 汉字点阵字库实现原理 1. 汉字编码 1.1 区位码 1.2 机内码 2. 点阵字库结构 2.1 点阵字库存储 2.2 16*16点阵字库 3. 汉字点阵获取 3.1 利用区位码获取汉 ...

  2. JAVA Opencv在图片上添加中文

    问题描述: 将图片进行均值.中值.高斯滤波,高斯边缘检测,并在图片上添加中文文字. 一.算法思想 首先经过opencv的一系列操作,例如高斯模糊.均值模糊等操作后.用Imgcodecs.imwrite ...

  3. 【OpenCV 例程200篇】23. 图像添加中文文字

    [OpenCV 例程200篇]23. 图像添加中文文字 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 OpenCV ...

  4. docker onlyoffice7.1.1 word excel ppt在线编辑、在线预览_添加中文字体和中文字号_02

    文章目录 一. onlyoffice添加中文字体 1. 下载字体 2. 上传字体 3. 删除原版自带字体 4. 字体复制 5. 安装字体 6. 重启容器 7. 清除缓存 8. 效果验证 二. only ...

  5. JAVACV实现视频帧添加中文水印

    @[TOC] JAVACV实现视频帧添加中文水印 JAVACV实现视频帧添加中文水印 最近有个项目需要用到监控视频和采集数据融合显示的问题.通过各种尝试,最终确定可以使用javacv+nginx-te ...

  6. centos安装IBUS并添加98五笔

    一般我们使用英文环境是没有办法使用中文的,这是因为我们没有设置在英文环境下的中文配置.下面我们在英文环境下配置中文输入法ibus使得我们可以输入中文.  首先,安装ibus #yum install ...

  7. 搭建onlyoffice实现多人在线编辑,以及添加中文字体,使用自定义插入的插件

    onlyoffice安装教程 演示图 获取安装资源 可以直接在onlyoffice官网下载社区版(有限制最高20在线编辑),采用docker安装,直接docker pull 镜像.也可以直接私信我镜像 ...

  8. 如何为Kali Linux添加中文输入法?

    为Kali Linux添加中文输入法Ibus. 前言:我们知道Kali Linux默认的系统语言是英语,默认的输入法中也只有英语,没有自带的中文输入法.对于英语不好的小伙伴,很是头疼.特别是没有中文输 ...

  9. 为CV::Mat添加中文

    opencv自带的puttext函数,能够很方便地在Mat中添加英文字母.但是在实际项目中,甲方往往希望能够添加中文标识.解决的方法,总的来说有两种,一种是基于基础库的,比如我使用MFC,那么所有的显 ...

最新文章

  1. 用计算机演银河系,天文学家利用计算机模拟类银河星系
  2. 什么是接口幂等性?为什么会产生这个问题?如何保证接口幂等性?
  3. RDKit | 基于随机森林(RF)的机器学习模型预测hERG阻断剂活性
  4. ADO.NET—数据提供程序(连接类)
  5. 所有配置_一张图看懂iPhone12的所有配置!
  6. mySql 的常用命令
  7. 【Groovy】集合遍历 ( 集合中有集合元素时调用 flatten 函数拉平集合元素 | 代码示例 )
  8. android系统源代码添加新产品的支持
  9. 都快下班了,才来写日记
  10. KEIL编译生成bin文件,并输出内存使用情况
  11. Linux中sudo免密码
  12. 项目中比较常用的数据筛选场景
  13. 信息安全系统设计基础第一次实验报告
  14. 2018春江苏省计算机等级考试,2018年春季江苏省计算机等级考试报名通知
  15. robot framework 添加selenium2library显示红色
  16. 高一计算机教学总结怎么写,高一信息技术教学工作总结
  17. 图灵mysql_图灵学院JAVA架构师-VIP-MySQL底层实现之B+树
  18. 网红神盾七号重疾险再创新高,自带住院津贴,还能赔两次!
  19. 什么是Bugzilla?
  20. Matlab中Robotics toolbox的安装及使用

热门文章

  1. 日常问题——VMware下的CentOS7 Ping不通百度
  2. Mysql截取中英数混合的字符串
  3. Frequent values【线段树】
  4. Ping pong【树状数组】
  5. Chess Queen【数学】
  6. OpenStack —— DevStack一键自动化安装
  7. Spring--quartz中cronExpression 的配置方法
  8. 在Tomcat中配配置数据源汇总
  9. Format Currency Sample
  10. python3的pyqt5 qtablewidget按数据大小排列_InnoDB为什么要选择B+树来存储数据?