加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

OpenCV添加中文(五)

发布时间:2021-05-21 08:08:44 所属栏目:大数据 来源: https://www.jb51.cc
导读:OpenCV添加文字的方法putText(...),添加英文是没有问题的,但如果你要添加中文就会出现“???”的乱码,需要特殊处理一下。 下文提供封装好的(代码)方法,供OpenCV添加中文使用。 往期目录 视频人脸检测——Dlib版(六) OpenCV添加中文(五) 图片人脸

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:WindowsFonts下面查找。

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",encoding="utf-8")
    draw.text((left,font=fontText)
    return cv2.cvtColor(numpy.asarray(img),cv2.COLOR_RGB2BGR)

代码调用

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

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读