使用Pillow库在摄像头读取的画面上添加中文文本

目录

1.简介

2.导入库

3.定义函数

4.函数实现

5.调用函数


1.简介

  由于OpenCV的Python库直接支持的中文字符集有限,所以本段代码使用了Pillow库来处理中文文本的渲染。

2.导入库

import cv2
import numpy as np
from PIL import Image, ImageDraw, ImageFont

3.定义函数

def cv2AddChineseText (img, text, position, textColor=(0, 255,0), textSize=30):
  • img:要在其上添加文本的图像,应该是NumPy数组格式。
  • text:要添加的文本字符串。
  • position:文本在图像中的位置,格式为(x, y)。
  • textColor:文本颜色的默认值,格式为BGR(这里是(0, 255, 0),表示绿色文本)。
  • textSize:文本大小的默认值。

4.函数实现

    if (isinstance(img, np.ndarray)):  # 判断是否为OpenCV图片类型
        img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))  
# 将OpenCV图像从BGR颜色空间转换为RGB颜色空间方便处理,然后使用Pillow的Image.fromarray方法将NumPy数组转换为Pillow图像对象
    draw = ImageDraw.Draw(img)  # 创建一个Pillow的绘图对象,用于在图像上绘制文本

    # 字体的格式
    fontStyle = ImageFont.truetype("ARIALUNI.TTF", textSize, encoding = "utf-8")
    draw.text(position, text, textColor, font=fontStyle) 
# 使用 draw.text 方法在指定的 position 位置绘制文本 text,使用指定的 textColor 和 fontStyle
    return cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR) 
# 将Pillow图像对象转换回NumPy数组,并从RGB颜色空间转换回BGR颜色空间,以便与OpenCV兼容

  这里使用的是 "ARIALUNI.TTF" 字体文件,它支持Unicode字符,因此可以显示中文。textSize 是字体大小,encoding = "utf-8" 确保文本以UTF-8编码。

有两种方法可以找到系统自带的字体文件名

1.在底栏搜索框中输入font。

2.找到C:\Windows\Fonts文件夹,右键单击需要的字体,在属性中找到文件名。

5.调用函数

frame = cv2AddChineseText(frame, result, (50, 100))
# 在 frame 图像上的 (50, 100) 位置添加 result 文本字符串

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值