python中cv2,等等如何修改为中文字体显示,这里以人脸表情识别中文标签为例

中文字体显示

  • 首先下载字体包
  • 部署字体包
  • 代码实现部分

想必大家在使用python过程中都会遇到,想要显示中文的时候,但是py基本上都是英文字体,下面我将给大家提供一个比较好的解决方案:

首先下载字体包

方法:
我使用的是思源黑体,思源黑体是 Adobe 与 Google 推出的一款开源字体。
下载地址:
官网:https://source.typekit.com/source-han-serif/cn/
在这里插入图片描述

Github地址:https://github.com/adobe-fonts/source-han-sans/tree/release/OTF/SimplifiedChinese
在这里插入图片描述
在这里插入图片描述

部署字体包

将你下载好的字体包SourceHanSansSC-Bold.otf移动到你需要用到的项目中
在这里插入图片描述

代码实现部分

导入模块

from PIL import ImageFont, ImageDraw

加载中文字体文件

font_path = "SourceHanSansSC-Bold.otf"
font = ImageFont.truetype(font_path, 30)

在画面中实现中文标签
这里我用了一个列表存放表情
EMOTIONS = [‘惊讶’, ‘恐惧’, ‘厌恶’, ‘开心’, ‘伤心’, ‘愤怒’, '中性 ']
在这里插入图片描述

            # 在视频帧上显示表情标签
            cv2.rectangle(frame, (x, y), (x + w, y + h), (255, 0, 0), 2)
            pil_img = Image.fromarray(frame)
            draw = ImageDraw.Draw(pil_img)
            draw.text((x, y - 10), emotion_label, font=font, fill=(0, 255, 0))
            # 将PIL图像转换回OpenCV格式
            cv_img = np.array(pil_img)

可以看到我将cv图片转换为了Image图片

pil_img = Image.fromarray(frame)

cv2.rectangle(frame, (x, y), (x + w, y + h), (255, 0, 0), 2): 这行代码在视频帧frame上绘制一个矩形框,矩形框的左上角坐标是(x, y),右下角坐标是(x + w, y + h),颜色是蓝色(255, 0, 0),线宽是2像素。

pil_img = Image.fromarray(frame): 这行代码将OpenCV格式的图像frame转换为PIL格式的图像pil_img,以便后续在图像上绘制文本。

draw = ImageDraw.Draw(pil_img): 这行代码创建了一个ImageDraw对象draw,用于在PIL图像上进行绘制操作。

draw.text((x, y - 10), emotion_label, font=font, fill=(0, 255, 0)): 这行代码在PIL图像上的坐标(x, y - 10)处绘制文本emotion_label,使用指定的字体font和填充颜色(0, 255, 0)。

cv_img = np.array(pil_img): 这行代码将PIL格式的图像pil_img转换回OpenCV格式的图像cv_img,以便后续显示在窗口中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/628854.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SuperBox设计出图的效率提升!新增内门自动开孔和垫高支架图纸输出功能

越来越多的配电箱项目要求带内门,内门不仅可以有效减少外界灰尘、异物进入配电箱内部,保障配电箱正常运行,还能够隔离操作人员意外触摸导电部件,减少触电事故的发生。但是配电箱在配置内门后,会给设计带来更多的要求&a…

Linux虚拟主机cPanel重置密码

我使用的Hostease的Linux虚拟主机产品默认带普通用户权限的cPanel面板,这边自购买后一直未重新设置过cPanel面板的密码,但是了解到要定期重置一下cPanel面板的密码,以确保主机数据安全,因此想要进行重置cPanel面板的密码&#xff…

Leecode热题100---3:无重复字符的最长子串

题目&#xff1a;给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串的长度。 C&#xff1a; 指针法&#xff0c;使用at读取字符串中的值&#xff1b; #include <iostream> #include <string> #include <vector> #include <windows.…

数据结构【顺序表】

文章目录 1.顺序表的概念线性表物理结构逻辑结构 2.顺序表的分类2.1静态顺序表2.2动态顺序表 3.顺序表接口的实现头文件(SQList.h)如下源文件初始化顺序表销毁顺序表插入扩容尾插头插 封装扩容函数删除尾删头删 查找元素在指定位置前插入数据情况一(指定的位置不是首元素)情况二…

淘宝扭蛋机小程序开发:探索未知的惊喜世界

一、引言 在这个充满无限可能的数字时代&#xff0c;每一次点击都可能带来意想不到的惊喜。淘宝扭蛋机小程序&#xff0c;正是为了满足您对惊喜的渴望&#xff0c;将扭蛋的趣味与购物的便捷完美结合&#xff0c;带您进入一个充满未知与乐趣的惊喜世界。 二、产品介绍 淘宝扭…

Redis教程(二):Redis在Linux环境下的安装

Linux环境下安装&#xff1a; 下载地址&#xff1a;Downloads - Redis 安装步骤&#xff1a; 下载得到一个 tar.gz 压缩文件 上传到Linux的/opt/soft目录&#xff0c;使用以下命令解压 tar -zxvf redis-6.2.14.tar.gz Linux安装基本环境gcc&#xff0c;安装命令 yum insta…

Encoder——Decoder工作原理与代码支撑

神经网络算法 &#xff1a;一文搞懂 Encoder-Decoder&#xff08;编码器-解码器&#xff09;_有编码器和解码器的神经网络-CSDN博客这篇文章写的不错&#xff0c;从定性的角度解释了一下&#xff0c;什么是编码器与解码器&#xff0c;我再学习笔记补充的时候&#xff0c;讲一下…

什么是网络端口?为什么会有高危端口?

一、什么是网络端口&#xff1f; 网络技术中的端口默认指的是TCP/IP协议中的服务端口&#xff0c;一共有0-65535个端口&#xff0c;比如我们最常见的端口是80端口默认访问网站的端口就是80&#xff0c;你直接在浏览器打开&#xff0c;会发现浏览器默认把80去掉&#xff0c;就是…

dfs记忆化搜索,动态规划

动态规划概念&#xff1a; 给定一个问题&#xff0c;将其拆成一个个子问题&#xff0c;直到子问题可以直接解决。然后把子问题的答案保存起来&#xff0c;以减少重复计算。再根据子问题的答案反推&#xff0c;得出原问题解。 821 运行时间长的原因&#xff1a; 重复大量计算…

Cadence 16.6 绘制PCB封装时总是卡死的解决方法

Cadence 16.6 绘制PCB封装时总是卡死的解决方法 在用Cadence 16.6 PCB Editor绘制PCB封装时候&#xff0c;绘制一步卡死一步&#xff0c;不知道怎么回事儿&#xff0c;在咨询公司IT后&#xff0c;发现是WIN系统自带输入法的某些热键与PCB Editor有冲突&#xff0c;导致卡死。 …

融资融券最低利率4.0!,融资融券利息计算公式,怎么开通?

融资融券的费率&#xff1a; 融资融券的费率主要包括融资利率和融券费率&#xff0c;这些费率的高低主要取决于证券公司的成本、政策倾向以及投资者的资金量大小。 融资利率方面&#xff0c;多数券商的优惠融资利率在5.5%到7.5%之间&#xff0c;与券商的成本和政策有关。一些…

带你了解AI大模型的前世今生

过去&#xff0c;开发者用代码来改变世界&#xff0c;未来&#xff0c;自然语言将成为通用的编程语言。大模型是如何成功的&#xff1f;有哪些应用&#xff1f;现在如何入局&#xff1f;一个全知全能的大模型能适配一切吗&#xff1f;在这个 AI 时代&#xff0c;什么样的工具才…

请收好,这份思科备考攻略很细节

对于网络工程师来说&#xff0c;思科认证无疑是一块金字招牌。它不仅代表着专业技能&#xff0c;更是职业发展的加速器。 今天我们不聊选思科认证还是华为认证&#xff0c;只能说是各有各的好&#xff0c;如果你已经选择了思科认证&#xff0c;那么这份备考攻略将为你提供一些实…

JavaScript异步编程——11-异常处理方案【万字长文,感谢支持】

异常处理方案 在JS开发中&#xff0c;处理异常包括两步&#xff1a;先抛出异常&#xff0c;然后捕获异常。 为什么要做异常处理 异常处理非常重要&#xff0c;至少有以下几个原因&#xff1a; 防止程序报错甚至停止运行&#xff1a;当代码执行过程中发生错误或异常时&#x…

国网1376.1主站与采集终端通信协议和国网1376.2集中器本地通信模块接口协议报文解析工具

本文分享一个国网1376.1主站与采集终端通信协议的报文解析工具&#xff0c;同时本报文解析软件也支持国网1376.2集中器本地通信模块接口协议的报文解析。 下载链接: https://pan.baidu.com/s/1ngbBG-yL8ucRWLDflqzEnQ 提取码: y1de 主界面如下图所示&#xff1a; 同时本软件自…

继承,多态,封装以及对象的打印

前言&#xff1a; 我们都知道Java是一种面向对象的编程语言&#xff0c;面向对象语言的三大特性就是继承&#xff0c;多态&#xff0c;封装&#xff0c;而这些特性正好的Java基础的一个主体内容。在学到这之前&#xff0c;我们肯定已经学习过了类和对象&#xff0c;所以这部分…

关于FIFO Generator IP和XPM_FIFO在涉及位宽转换上的区别

在Xilinx FPGA中&#xff0c;要实现FIFO的功能时&#xff0c;大部分时候会使用两种方法&#xff1a; FIFO Generator IP核XPM_FIFO原语 FIFO Generator IP核的优点是有图形化界面&#xff0c;配置参数非常直观&#xff1b;缺点是参数一旦固定&#xff0c;想要更改的化就只能重…

幻兽帕鲁Palworld服务器手动部署

目录 帕鲁官方文档手动安装steamcmd通过steamcmd安装帕鲁后端客户端连接附录&#xff1a;PalServer.sh的启动项附录&#xff1a;配置文件 帕鲁官方文档 https://tech.palworldgame.com/ 手动安装steamcmd 创建steam用户 sudo useradd -m steam sudo passwd steam下载steamc…

迭代的难题:敏捷团队每次都有未完成的工作,如何破解?

各位是否遇到过类似的情况&#xff1a;每次迭代结束后&#xff0c;团队都有未完成的任务&#xff0c;很少有完成迭代全部的工作&#xff0c;相反&#xff0c;总是将上期未完成的任务重新挪到本期计划会中&#xff0c;重新规划。敏捷的核心之一是“快速迭代&#xff0c;及时反馈…

ssm基于BS的项目监管系统+jsp论文

系统简介 信息数据从传统到当代&#xff0c;是一直在变革当中&#xff0c;突如其来的互联网让传统的信息管理看到了革命性的曙光&#xff0c;因为传统信息管理从时效性&#xff0c;还是安全性&#xff0c;还是可操作性等各个方面来讲&#xff0c;遇到了互联网时代才发现能补上…