1.项目背景

人脸表情识别是模式识别中一个非常重要却十分复杂的课题。首先对计算机人脸表情识别技术的研究背景及发展历程作了简单回顾。然后对近期人脸表情识别的方法进行了分类综述。通过对各种识别方法的分析与比较 ,提出了人脸表情识别技术实用化所需要考虑的几个方面 ,进而展望了今后人脸表情识别技术的发展方向。

2.识别效果展示

3.识别视频演示

Python基于OpenCV的人脸表情识别系统[源码&部署教程]_哔哩哔哩_bilibili

4.实现方法分析

人脸表情识别中需要运用人脸检测技术,识别人脸之后,再对表情图像做预处理(彩色图像灰度化、图像几何归一化和光照预处理),然后再对表情特征进行提取,分析,从而实现对表情的识别。国内外对于人脸的表情识别的研究近几年非常的多,涌现出了很多的算法,但对于表情的识别精度还是有待改进。

5.实现方法分析

人脸表情识别中需要运用人脸检测技术,识别人脸之后,再对表情图像做预处理(彩色图像灰度化、图像几何归一化和光照预处理),然后再对表情特征进行提取,分析,从而实现对表情的识别。国内外对于人脸的表情识别的研究近几年非常的多,涌现出了很多的算法,但对于表情的识别精度还是有待改进。
参考该博客的方法,本设计采用人脸检测技术,并进行标记,图像灰度化,图像几何归一化等方法,通过提取出嘴巴,眼睛两个地方的大小变化进行判断。

5.算法流程图

6.fer2013人脸表情数据集简介

Fer2013人脸表情数据集由35886张人脸表情图片组成,其中,测试图(Training)28708张,公共验证图(PublicTest)和私有验证图(PrivateTest)各3589张,每张图片是由大小固定为48×48的灰度图像组成,共有7种表情,分别对应于数字标签0-6,具体表情对应的标签和中英文如下:0 anger 生气; 1 disgust 厌恶; 2 fear 恐惧; 3 happy 开心; 4 sad 伤心;5 surprised 惊讶; 6 normal 中性。

但是,数据集并没有直接给出图片,而是将表情、图片数据、用途的数据保存到csv文件中,如下图所示,

如上图所示,第一张图是csv文件的开头,第一行是表头,说明每列数据的含义,第一列表示表情标签,第二列即为图片数据,这里是原始的图片数据,最后一列为用途。

7.表情图片提取

按照该博客的数据结构存放数据集,使用pandas解析csv文件,(pandas的简单用法可以查看这篇博客:https://blog.csdn.net/rookie_wei/article/details/82974277 ),再将原始图片数据保存为jpg文件,并根据用途和标签标签进行分类,分别保存到对应文件夹下,代码比较简单,并且做了详细备注,直接给完整代码如下

代码实现

#encoding:utf-8
import pandas as pd
import numpy as np
import scipy.misc as sm
import osemotions = {'0':'anger', #生气'1':'disgust', #厌恶'2':'fear', #恐惧'3':'happy', #开心'4':'sad', #伤心'5':'surprised', #惊讶'6':'normal', #中性
}#创建文件夹
def createDir(dir):if os.path.exists(dir) is False:os.makedirs(dir)def saveImageFromFer2013(file):#读取csv文件faces_data = pd.read_csv(file)imageCount = 0#遍历csv文件内容,并将图片数据按分类保存for index in range(len(faces_data)):#解析每一行csv文件内容emotion_data = faces_data.loc[index][0]image_data = faces_data.loc[index][1]usage_data = faces_data.loc[index][2]#将图片数据转换成48*48data_array = list(map(float, image_data.split()))data_array = np.asarray(data_array)image = data_array.reshape(48, 48)#选择分类,并创建文件名dirName = usage_dataemotionName = emotions[str(emotion_data)]#图片要保存的文件夹imagePath = os.path.join(dirName, emotionName)# 创建“用途文件夹”和“表情”文件夹createDir(dirName)createDir(imagePath)#图片文件名imageName = os.path.join(imagePath, str(index) + '.jpg')sm.toimage(image).save(imageName)imageCount = indexprint('总共有' + str(imageCount) + '张图片')if __name__ == '__main__':saveImageFromFer2013('fer2013.csv')

运行完上面的代码后,得到3个文件夹,文件下有相应的表情的子文件夹

子文件夹下又有相应的图片

8.系统整合

下图完整源码&环境部暑视频教程&数据集&自定义UI界面

参考博客《Python基于OpenCV的人脸表情识别系统[源码&部署教程]》

9.参考文献

  • [1]人工心理模型驱动的人脸表情动画合成[J]. 谷学静,许广宾,熊伟,王志良. 计算机工程与应用. 2008(08)
  • [2]基于CNN的人脸识别解压助眠微信小程序[J]. 胡文寒,李健喆,曾天伦,沈青. 电脑编程技巧与维护. 2022(08)
  • [3]小波变换在人脸表情识别研究中的应用[J]. 崔景霞. 长春理工大学学报(自然科学版). 2011(03)
  • [4]基于活动外观模型的人脸表情分析与识别[J]. 左坤隆,刘文耀. 光电子·激光. 2004(07)
  • [5]人脸表情识别方法综述[J]. 陈俊. 中国集体经济. 2009(16)
  • [6]基于语义属性的人脸表情识别新方法[J]. 于永斌,刘清怡,毛启容,詹永照. 小型微型计算机系统. 2016(02)
  • [7]人脸表情特征提取方法的研究进展[J]. 乔明,陈亚军. 重庆工学院学报(自然科学版). 2008(06)
  • [8]人脸表情自动识别技术研究进展[J]. 张家树,陈辉,李德芳,罗小宾,夏小东. 西南交通大学学报. 2005(03)
  • [9]基于多群体遗传算法的人脸表情识别[J]. 朱娅妮,吴国华,杜加友. 杭州电子科技大学学报. 2013(01)
  • [10]基于生成对抗网络的人脸表情数据增强方法[J]. 孙晓,丁小龙. 计算机工程与应用. 2020(04)

Python基于OpenCV的人脸表情识别系统[源码&部署教程]相关推荐

  1. Python基于OpenCV的异常行为检测系统[源码&部署教程]

    1.项目背景 智能视频监控(Intelligent Video Surveillance , IVS)[1.2·3.4是计算机视觉技术5l在安防领域的应用,实现了由"被动监控"到& ...

  2. Python基于YOLOv5的交通标志识别系统[源码]

    1.图片演示: 2.视频演示: [项目分享]Python基于YOLOv5的交通标志识别系统[源码&技术文档&部署视频&数据集]_哔哩哔哩_bilibili 3.标注好的数据集: ...

  3. Python基于YOLOv5的交通标志识别系统[源码&技术文档&部署视频&数据集]

    1.图片演示: 2.视频演示: 3.标注好的数据集: 4.YOLO网络的构建: 网络结构是首先用Focus将计算图长宽变为原先1/4, channel 数量乘4.再用bottlenectCSP 提取特 ...

  4. 基于MobileNet的人脸表情识别系统(MATLAB GUI版+原理详解)

    摘要:本篇博客介绍了基于MobileNet的人脸表情识别系统,支持图片识别.视频识别.摄像头识别等多种形式,通过GUI界面实现表情识别可视化展示.首先介绍了表情识别任务的背景与意义,总结近年来利用深度 ...

  5. 基于CNN的人脸表情识别系统

    基于CNN的人脸表情识别系统 主要功能: 1)图片识别,可以通过上传本地图片,进行表情识别 2)拍照识别,点击拍照识别按钮,可以调用摄像头实现拍照,并进 行表情识别 实现原理: 1.表情库的建立 fe ...

  6. python本科毕业设计基于神经网络的虚假评论识别系统源码,含模型及数据

    主要函数: 1.corpusprocess原始语料处理函数 2.train_word2vec生成word2vec向量 3.generate_id2wec获得索引的w2id,和嵌入权重embedding ...

  7. 基于Python tensorflow2.3实现的水果识别系统源码+模型+数据集,卷积神经网络的入门案例

    水果识别-基于tensorflow2.3实现 水果识别是卷积神经网络的入门案例,这里我将模型的训练.测试.保存以及使用整合在了一起,至于原理部分,大家可以参考知乎或者B站上的回答,在这里我就不赘述了 ...

  8. 【YOLOv7】Python基于YOLOv7的人员跌倒检测系统(源码&部署教程&数据集)

    1.项目背景: 世界老龄化趋势日益严重,现代化的生活习惯又使得大多数老人独居,统计数据表明,跌倒是老年人的主要致伤原因.利用先进的计算机技术.传感器技术和图像信息处理技术实现人体跌倒自动检测,不仅可以 ...

  9. Keras|基于深度学习的人脸表情识别系统

    更新内容(2019-4-12) 已将Keras版本模型权重压缩之后上传至GItHub,可以自取 更新内容(2018-12-9) 正好在学习tensorflow,使用tensorflow重构了一下这个系 ...

最新文章

  1. Git 提交代码 简单步骤
  2. java mysql 文本导入数据语句_Java利用MYSQL LOAD DATA LOCAL INFILE实现大批量导入数据到MySQL...
  3. P4879-ycz的妹子【分块】
  4. Hadoop单机模式安装入门(Ubuntu系统)
  5. JDK 8 新特性- 学习中
  6. Linux块层技术全面剖析-v0.1
  7. 用上Latex实现编辑伪代码
  8. HEVC官方代码下载及码流分析软件使用
  9. oracle主键重复异常捕获,Oracle异常处理异常处
  10. 51单片机和52单片机区别是什么?51仿真器有必要买吗?
  11. dstwo linux 模拟器,dstwo md模拟器使用图文教程
  12. 如何利用Python对服务器的接口进行压力测试
  13. 适合小型团队的在线文档管理系统【minDoc】
  14. 如何做好工程项目管理策划书,这个范本值得参考!
  15. 2013年IT界25个最古怪的面试题
  16. iOS 上传App Store 报 ITMS-90096错误处理方法
  17. 如何Navicat完成还原数据库?Navicat还原数据库出现数据丢失或则是不完整,怎么解决?
  18. android 开发比较好的学习网站和博主
  19. 运放放大倍数计算公式_运算放大器基础1——用作比较器
  20. 6.25 周测题目整理

热门文章

  1. React+TS学习和使用(三):React Redux和项目的路由配置
  2. 嵌入式硬件 软件测试,嵌入式系统软硬件功能测试方法及性能评估研究
  3. verilog ~|
  4. 百度实时主动推送url
  5. 什么是opt文件,plg,ncb等
  6. slave-pending-jobs-size-max导致主从延迟
  7. 阿卡迪亚大学计算机专业好考吗,考上阿卡迪亚大学有多难?
  8. 2017年PHP程序员未来路在何方——韩天峰
  9. 关于PHP程序员技术职业生涯规划--swool大神韩天峰
  10. 驾驶车辆 档位与油门的关系