前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >解决python-opencv中中文乱码情况,教你用OpenCV添加中文

解决python-opencv中中文乱码情况,教你用OpenCV添加中文

原创
作者头像
奈何缘浅wyj
修改2021-03-01 14:36:23
8.8K0
修改2021-03-01 14:36:23
举报
文章被收录于专栏:python技术开发python技术开发

OpenCV添加中文

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

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

效果预览

在这里插入图片描述
在这里插入图片描述

实现思路

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

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

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

代码分解

**OpenCV图片转换为PIL图片格式**

代码语言:txt
复制
img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR\_BGR2RGB))

**使用PIL绘制文字**

代码语言:txt
复制
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的图片格式**

代码语言:txt
复制
cv2.cvtColor(numpy.asarray(img), cv2.COLOR\_RGB2BGR)

完整代码

封装好的完整方法

代码语言:txt
复制
#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)

代码调用

代码语言:txt
复制
img = cv2ImgAddText(img, "大家好,我是星爷", 140, 60, (255, 255, 0), 20)

「❤️ 感谢大家」

  • 点赞支持下吧,让更多的人也能看到这篇内容(收藏不点赞,都是耍流氓 -_-)
  • 欢迎在留言区与我分享你的想法,也欢迎你在留言区记录你的思考过程

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • OpenCV添加中文
  • 效果预览
  • 实现思路
  • 代码分解
  • 完整代码
  • 「❤️ 感谢大家」
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档