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

news2024/11/16 9:50:49

中文字体显示

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

想必大家在使用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,以便后续显示在窗口中。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NGINX SPRING HTTPS证书

服务器:xxx.xxx.xxx.56 客户端器:xxx.xxx.xxx.94##生成服务器证书和密钥容器 keytool -genkey -alias tas-server -keypass 250250 -keyalg RSA -keysize 2048 -validity 3650 -keystore D:\https证书\tas-server.jks -storepass 250250 -dname "C…

喜茶·茶坊黑金首店入驻北京三里屯,率先引入珍稀娟姗奶制茶

发布 | 大力财经 近日,喜茶茶坊 BLACK 在北京三里屯开业,这是喜茶新业态的首家黑金店型。该店在延续喜茶茶坊“鲜、茶、纯”的精品茗茶特色和宋代茶文化审美意趣的基础上,首次升级呈现了铜锅手煮烹茶工艺、娟姗牛乳制茶等创新尝试&#xff0…

Vue.js 详细介绍

文章目录 一、Vue.js 简介1.1 什么是 Vue.js?1.2 Vue.js 的特点 二、快速上手 Vue.js2.1 安装 Vue.js使用 CDN使用 npm 或 yarn 2.2 创建一个 Vue 实例2.3 Vue.js 项目结构 三、Vue.js 核心概念3.1 数据绑定3.2 指令(Directives)3.3 组件&…

echarts map地图添加背景图

给map地图添加了一个阴影3d的效果&#xff0c;添加一张背景图&#xff0c;给人感觉有3d的效果 具体配置如下&#xff1a; html代码模块&#xff1a; <div class"echart_img" style"position: fixed; visibility: hidden;"></div><div id&q…

ARM机密计算架构

安全之安全(security)博客目录导读 目录 机密计算:Arm架构下一个新的信任模型 Arm CCA组件 领域管理扩展的访问控制 安全地运行所有应用程序 领域如何在受保护的内存空间中执行 重新评估信任关系 我们对Arm机密计算架构&#xff08;CCA&#xff09;的愿景是保护计算发生…

【Web后端】MVC模式

1、简介 MVC模式&#xff0c;全称Model-View-Controller&#xff08;模型-视图-控制器&#xff09;模式&#xff0c;是一种软件设计典范&#xff0c;它将应用程序的用户界面&#xff08;视图&#xff09;和业务逻辑&#xff08;模型&#xff09;分离&#xff0c;同时提供了一个…

Springboot+Vue项目-基于Java+MySQL的民族婚纱预定系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

Stable Diffusion入门使用技巧及个人实例分享--大模型及lora篇

大家好&#xff0c;近期使用Stable Diffusion比较多&#xff0c;积累整理了一些内容&#xff0c;得空分享给大家。如果你近期正好在关注AI绘画领域&#xff0c;可以看看哦。 本文比较适合已经解决了安装问题&#xff0c;&#xff08;没有安装的在文末领取&#xff09; 在寻找合…

线性/非线性最小二乘 与 牛顿/高斯牛顿/LM 原理及算法

最小二乘分为线性最小二乘和非线性最小二乘 最小二乘目标函数都是min ||f(x)||2 若f(x) ax b&#xff0c;就是线性最小二乘&#xff1b;若f(x) ax2 b / ax2 bx 之类的&#xff0c;就是非线性最小二乘&#xff1b; 1. 求解线性最小二乘 【参考】 2. 求解非线性最小二乘…

nn.BatchNorm中affine参数的作用

在PyTorch的nn.BatchNorm2d中&#xff0c;affine参数决定是否在批归一化&#xff08;Batch Normalization&#xff09;过程中引入可学习的缩放和平移参数。 BN层的公式如下&#xff0c; affine参数决定是否在批归一化之后应用一个可学习的线性变换&#xff0c;即缩放和平移。具…

阿里云域名备案流程

阿里云域名备案流程大致可以分为以下几个步骤&#xff0c;这些信息综合了不同来源的最新流程说明&#xff0c;确保了流程的时效性和准确性&#xff1a; UP贴心的附带了链接&#xff1a; 首次备案流程&#xff1a;ICP首次备案_备案(ICP Filing)-阿里云帮助中心 (aliyun.com) …

现实投资者怎么摆脱伦敦银波动影响?

有伦敦银投资经验的朋友会发现&#xff0c;即便自己找到了伦敦银市场的趋势&#xff0c;但是总是没办法坚守自己的仓位&#xff0c;因为没办法摆脱伦敦银波动的影响&#xff0c;比方说在上升趋势中买入后&#xff0c;投资者总是是觉得伦敦银价格会反转下跌&#xff0c;所以他就…

Java(二)——方法与数组

文章目录 方法与数组方法方法的定义方法的执行实参与形参方法重载方法签名 数组创建与初始化数组的类型数组应用转字符串排序查找&#xff08;二分&#xff09;填充拷贝判等 二维数组创建及初始化遍历本质和内存分布不规则二维数组 方法与数组 方法 什么是方法&#xff1f; …

Kubernetes二进制(单master)部署

文章目录 Kubernetes二进制&#xff08;单master&#xff09;部署一、常见的K8S部署方式1. Minikube2. Kubeadmin3. 二进制安装部署4. 小结 二、K8S单&#xff08;Master&#xff09;节点二进制部署1. 环境准备1.1 服务器配置1.2 关闭防火墙1.3 修改主机名1.4 关闭swap1.5 在/e…

【管理咨询宝藏103】麦肯锡咨询顾问逻辑结构内部培训

本报告首发于公号“管理咨询宝藏”&#xff0c;如需阅读完整版报告内容&#xff0c;请查阅公号“管理咨询宝藏”。 【管理咨询宝藏103】麦肯锡咨询顾问逻辑结构内部培训 【格式】PDF版本 【关键词】麦肯锡、咨询顾问、逻辑培训 【核心观点】 - 所谓逻辑性&#xff0c;指的是“…

【数据结构】栈的实现(顺序栈)

文章目录 栈的概念和结构栈的实现1.顺序存储结构栈的定义初始化栈入栈出栈获取栈顶元素获取栈中有效元素个数检测栈是否为空&#xff0c;如果为空返回非零结果&#xff0c;如果不为空返回0销毁栈栈的打印 完整代码&#xff08;包括测试代码&#xff09;Stack.hStack.ctest.c 栈…

控制状态流程图中的消息活动

消息是一个Stateflow对象&#xff0c;用于在本地或图表之间进行数据通信。从发件人图表中&#xff0c;您可以发送或转发邮件。在接收图表中&#xff0c;队列接收消息并将其保存&#xff0c;直到图表能够对其进行评估。 使用Stateflow运算符&#xff0c;您可以访问消息数据&…

更高效的数据交互实现丨 DolphinDB Arrow 插件使用教程

Apache Arrow 是一种跨语言的内存数据交换格式&#xff0c;旨在为用户提供高效的数据结构&#xff0c;以实现在不同的数据处理系统之间共享数据而无需进行复制。它由 Apache 软件基金会开发和维护&#xff0c;目前已经成为许多大型数据处理和分析框架的核心组件之一。在分布式框…

2024年【金属非金属矿山(露天矿山)安全管理人员】模拟考试题库及金属非金属矿山(露天矿山)安全管理人员作业模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 金属非金属矿山&#xff08;露天矿山&#xff09;安全管理人员模拟考试题库参考答案及金属非金属矿山&#xff08;露天矿山&#xff09;安全管理人员考试试题解析是安全生产模拟考试一点通题库老师及金属非金属矿山&a…

DiskGenius帮你恢复系统无法识别的U盘数据

场景还原 前两天早上U盘复制文件卡死后&#xff0c;强行断开U盘&#xff0c;再次使用直接无法访问&#xff0c;心拔凉拔凉&#xff01;&#xff01; 使用驱动器G:中的光盘之前需要将其格式化 位置不可用-无法访问U盘 常规科普 一、U盘无法识别 1、检查U盘是否插入正确&…