⌈ 传知代码 ⌋ 微表情识别系统

2024-06-04 20:52

本文主要是介绍⌈ 传知代码 ⌋ 微表情识别系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

💛前情提要💛

本文是传知代码平台中的相关前沿知识与技术的分享~

接下来我们即将进入一个全新的空间,对技术有一个全新的视角~

本文所涉及所有资源均在传知代码平台可获取

以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦!!!

以下内容干货满满,跟上步伐吧~


📌导航小助手📌

  • 💡本章重点
  • 🍞一. 概述
  • 🍞二. 核心逻辑
  • 🍞三. 使用方式
  • 🫓总结


💡本章重点

  • 微表情识别系统

🍞一. 概述

面部表情图像预处理是面部表情识别的重要步骤,主要目的是在于提取特征之前排除一切与面部表情无关的干扰因素。例如,环境光照、姿势和不同背景等。在干扰排除后,将人类面部直接与公共参考系相对接、使每个面部特征对应的语义位置精准无误。人脸检测、人脸对齐、数据增强、人脸一是实现面部表情图像预处理的主要方法


🍞二. 核心逻辑

人脸检测:

# 初始化字典,并保存Haar级联检测器名称及文件路径
detectorPaths = {"face": "haarcascade_frontalface_default.xml"
}
'''
加载Haar级联检测器:
创建一个空字典detectors,用于存储加载的检测器。
使用cv2.CascadeClassifier()加载XML文件,并将检测器存储在detectors字典中。
'''
# 初始化字典以保存多个Haar级联检测器
print("[INFO] loading haar cascades...")
detectors = {}# 遍历检测器路径
for (name, path) in detectorPaths.items():# 加载Haar级联检测器并保存到mappath = os.path.sep.join([args["cascades"], path])
detectors[name] = cv2.CascadeClassifier(path)
'''
图像处理:
从磁盘读取输入图像,使用imutils.resize函数将图像宽度调整为500像素。
将图像转换为灰度图以便进行人脸检测。
'''
# 从磁盘读取图像,缩放,并转换灰度图
print(args['image'])
image = cv2.imread(args["image"])
image = imutils.resize(image, width=500)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
'''
执行面部检测:
使用人脸检测器执行面部检测,得到面部的边界框坐标。
'''
# 使用合适的Haar检测器执行面部检测
faceRects = detectors["face"].detectMultiScale(gray, scaleFactor=1.05, minNeighbors=5, minSize=(30, 30),
flags=cv2.CASCADE_SCALE_IMAGE)
'''
眼睛和嘴巴检测:
对于每个检测到的面部,分别在面部ROI中应用眼睛和嘴巴检测器,得到相应的边界框坐标。
'''
# 遍历检测到的所有面部
for (fX, fY, fW, fH) in faceRects:# 提取面部ROIfaceROI = gray[fY:fY + fH, fX:fX + fW]# 在面部ROI应用左右眼级联检测器eyeRects = detectors["eyes"].detectMultiScale(faceROI, scaleFactor=1.1, minNeighbors=10,minSize=(15, 15), flags=cv2.CASCADE_SCALE_IMAGE)# 在面部ROI应用嘴部检测smileRects = detectors["smile"].detectMultiScale(faceROI, scaleFactor=1.1, minNeighbors=10,minSize=(15, 15), flags=cv2.CASCADE_SCALE_IMAGE)

多人脸检测:

在这里插入图片描述
Haar是一种特征描述,随着时代的进步Haar也从Haar Basic的三种简单特征扩展到了Haar-Like以及到现在的Haar Extended。但是万变不离其宗,我们笼统得把他们分成三类:中心特征,线性特征, 边缘特征。特征模板内有白色和黑色两种矩形,并定义该模板的特征值为白色矩形像素和减去黑色矩形像素和。Haar特征值反映了图像的灰度变化情况

在这里插入图片描述
Haar原来就是一些固定的特征模型,在人脸识别这个特助的领域中可以局部的契合图像特征。

级联示意图:

在这里插入图片描述
卷积神经网络,FaceCNN 类:

初始化:定义了一个包含卷积层、批量归一化、RReLU激活函数、池化层和全连接层的卷积神经网络结构。
前向传播方法 (forward):定义了模型的前向传播过程。

在这里插入图片描述


🍞三. 使用方式

在这里插入图片描述
功能分别是中文显示识别结果以及用英文显示识别结果以及相应的置信度计算结果展示。

在这里插入图片描述

设置中文字体

font = cv2.FONT_HERSHEY_SIMPLEX
font_chinese = cv2.FONT_HERSHEY_SIMPLEX 

指定中文字体文件路径,替换成你自己的中文字体文件路径

font_path = ''
font_chinese = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText()

确保你已经下载并设置好中文字体文件路径。

text = f"{} ()"
cv2.putText()

将 cv2.putText 函数的 font 参数替换为 font_chinese,以确保使用中文字体。

置信度计算:

在这里插入图片描述


🫓总结

综上,我们基本了解了“一项全新的技术啦” 🍭 ~~

恭喜你的内功又双叒叕得到了提高!!!

感谢你们的阅读😆

后续还会继续更新💓,欢迎持续关注📌哟~

💫如果有错误❌,欢迎指正呀💫

✨如果觉得收获满满,可以点点赞👍支持一下哟~✨

【传知科技 – 了解更多新知识】

在这里插入图片描述
加粗样式

这篇关于⌈ 传知代码 ⌋ 微表情识别系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1031093

相关文章

Spring Boot 3.4.3 基于 Spring WebFlux 实现 SSE 功能(代码示例)

《SpringBoot3.4.3基于SpringWebFlux实现SSE功能(代码示例)》SpringBoot3.4.3结合SpringWebFlux实现SSE功能,为实时数据推送提供... 目录1. SSE 简介1.1 什么是 SSE?1.2 SSE 的优点1.3 适用场景2. Spring WebFlu

java之Objects.nonNull用法代码解读

《java之Objects.nonNull用法代码解读》:本文主要介绍java之Objects.nonNull用法代码,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录Java之Objects.nonwww.chinasem.cnNull用法代码Objects.nonN

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

在C#中调用Python代码的两种实现方式

《在C#中调用Python代码的两种实现方式》:本文主要介绍在C#中调用Python代码的两种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#调用python代码的方式1. 使用 Python.NET2. 使用外部进程调用 Python 脚本总结C#调

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

Java中&和&&以及|和||的区别、应用场景和代码示例

《Java中&和&&以及|和||的区别、应用场景和代码示例》:本文主要介绍Java中的逻辑运算符&、&&、|和||的区别,包括它们在布尔和整数类型上的应用,文中通过代码介绍的非常详细,需要的朋友可... 目录前言1. & 和 &&代码示例2. | 和 ||代码示例3. 为什么要使用 & 和 | 而不是总是使

Java强制转化示例代码详解

《Java强制转化示例代码详解》:本文主要介绍Java编程语言中的类型转换,包括基本类型之间的强制类型转换和引用类型的强制类型转换,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录引入基本类型强制转换1.数字之间2.数字字符之间引入引用类型的强制转换总结引入在Java编程语言中,类型转换(无论

Vue 调用摄像头扫描条码功能实现代码

《Vue调用摄像头扫描条码功能实现代码》本文介绍了如何使用Vue.js和jsQR库来实现调用摄像头并扫描条码的功能,通过安装依赖、获取摄像头视频流、解析条码等步骤,实现了从开始扫描到停止扫描的完整流... 目录实现步骤:代码实现1. 安装依赖2. vue 页面代码功能说明注意事项以下是一个基于 Vue.js

mybatis-plus 实现查询表名动态修改的示例代码

《mybatis-plus实现查询表名动态修改的示例代码》通过MyBatis-Plus实现表名的动态替换,根据配置或入参选择不同的表,本文主要介绍了mybatis-plus实现查询表名动态修改的示... 目录实现数据库初始化依赖包配置读取类设置 myBATis-plus 插件测试通过 mybatis-plu