OpenCV添加中文(五)

简介: OpenCV添加文字的方法putText(...),添加英文是没有问题的,但如果你要添加中文就会出现“???”的乱码,需要特殊处理一下。下文提供封装好的(代码)方法,供OpenCV添加中文使用。往期目录视频人脸检测——Dlib版(六)OpenCV添加中文(五)图片人脸检测——Dlib版(四)视...

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

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

往期目录

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

效果预览

img_69b0f0ad80af94cc7d73430bcc0e0120.png

实现思路

使用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, 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)
    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)
img_fa0be433d68c8212b2b0b3b1a564ccb1.png
如果本文对你有所帮助,请打赏——1元就足够感动我:)
支付宝打赏 微信打赏
联系邮箱:intdb@qq.com
我的GitHub: https://github.com/vipstone
关注公众号: img_9bde0f31ac4a0eca10b1bd7414b78faf.png


作者: 王磊
出处: http://vipstone.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,请标明出处。

相关文章
|
2月前
|
机器学习/深度学习 并行计算 算法
OpenCV 4基础篇| OpenCV简介
OpenCV 4基础篇| OpenCV简介
|
4月前
|
计算机视觉 Python 机器学习/深度学习
【Python OpenCV】OpenCV介绍
【Python OpenCV】OpenCV介绍
|
4月前
|
计算机视觉 Python 数据可视化
【Python Opencv】Opencv画图形
【Python Opencv】Opencv画图形
136 1
【Python Opencv】Opencv画图形
|
11月前
|
计算机视觉 C++ Python
OpenCV入门(C++/Python)- 使用OpenCV进行图像旋转和转换(五)
OpenCV入门(C++/Python)- 使用OpenCV进行图像旋转和转换(五)
198 0
|
11月前
|
存储 C++ 计算机视觉
OpenCV入门(C++/Python)-使用OpenCV裁剪图像(四)
OpenCV入门(C++/Python)-使用OpenCV裁剪图像(四)
335 0
|
11月前
|
计算机视觉 C++ Python
OpenCV入门(C++/Python)- 使用OpenCV读取、显示和写入图像(一)
OpenCV入门(C++/Python)- 使用OpenCV读取、显示和写入图像(一)
189 0
|
11月前
|
机器学习/深度学习 算法 Java
Opencv 笔记
Opencv 笔记
|
12月前
|
算法 计算机视觉
|
计算机视觉
opencv笔记
cv2.polylines() 画多边形