利用Python和OpenCV进行面部表情识别

这篇博客介绍了如何利用Python和OpenCV进行面部表情识别。作者首先介绍了一个大型数据库的必要性,如CK +数据库,然后展示了如何使用OpenCV的HAAR过滤器进行人脸识别,裁剪并保存图像。接着,通过VGG-16进行图像向量表示,并使用预训练模型进行转移学习。最后,训练了多个机器学习模型,如逻辑回归、KNN和SVM,发现逻辑回归在面部表情识别任务中表现最佳。
摘要由CSDN通过智能技术生成

简要介绍:

利用Python和OpenCV进行面部表情识别

识别情绪的步骤

使用摄像头拍摄输入图像,并使用python中的opencv检测脸部,并尝试使用CNN深度学习概念和分类任务从获得的脸部图像中获取特征,提取的特征为给予像Logistic回归这样的分类器,SVM等和分类器将识别的表达式预测为输出。

入门..

为了解决这个问题,我们需要一个描述不同情绪的不同面孔的大型数据库。为此,您可以下载CK +数据库(http://www.consortium.ri.cmu.edu/ckagree/),或者您可以自己制作数据集,但要确保数据集大或多样化。

利用Python和OpenCV进行面部表情识别

在这里,我使用我自己的数据库和数千个图像,并将它们组织在一个名为dataset的文件夹中,其中有7个不同的子文件夹(将成为您的7个课程),名为愤怒(anger),厌恶(disgust),恐惧(fear),快乐(happy),中立(neutral),悲伤(sad),惊喜(surprise)其中包含特定表达的图像。


在这里还是要推荐下我自己建的Python开发学习群:483546416,群里都是学Python开发的,如果你正在学习Python ,小编欢迎你加入,大家都是软件开发党,不定期分享干货(只有Python软件开发相关的),包括我自己整理的一份2018最新的Python进阶资料和高级开发教程,欢迎进阶中和进想深入Python的小伙伴

为了完成这项任务,我们需要在每幅图像上找到人脸,将其转换为灰度图,剪裁并将图像保存到数据集中。我们可以使用OpenCV的HAAR过滤器自动进行人脸识别

cv2.namedWindow("preview")

vc = cv2.VideoCapture(0)

face_cascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")

facedict = {}

emotions =["anger","disgust","fear","happy","neutral","sad","surprise"]

#To crop face in an image

def crop_face(clahe_image, face):

for (x, y, w, h) in face:

faceslice = clahe_image[y:y+h, x:x+w]

faceslice = cv2.resize(faceslice, (350, 350))

facedict["face%s" %(len(facedict)+1)] = faceslice

return faceslice

def build_set(emotions):

check_folders(emotions)

for i in range(0, len(emotions)):

save_face(emotions[i])

print("Great,You are Done!" )

cv2.destroyWindow("preview")

cv2.destroyWindow("webcam")

#To check if folder exists, create if doesnt exists

def check_folders(emotions):

for x in emotions:

if os.path.exists("dataset\%s" %x):

pass

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值