简要介绍:
使用摄像头拍摄输入图像,并使用python中的opencv检测脸部,并尝试使用CNN深度学习概念和分类任务从获得的脸部图像中获取特征,提取的特征为给予像Logistic回归这样的分类器,SVM等和分类器将识别的表达式预测为输出。
入门..
为了解决这个问题,我们需要一个描述不同情绪的不同面孔的大型数据库。为此,您可以下载CK +数据库(http://www.consortium.ri.cmu.edu/ckagree/),或者您可以自己制作数据集,但要确保数据集大或多样化。
在这里,我使用我自己的数据库和数千个图像,并将它们组织在一个名为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