Python中怎么实现一个面部识别功能

这篇文章给大家介绍Python中怎么实现一个面部识别功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

10年的兴隆台网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销的优势是能够根据用户设备显示端的尺寸不同,自动调整兴隆台建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“兴隆台网站设计”,“兴隆台网站推广”以来,每个客户项目都认真落实执行。

使用Haar人脸特征分类器

用以下图像为例:

Python中怎么实现一个面部识别功能

来看看识别这张图片中的人脸代码:

import cv2               group_of_people_image = cv2.imread('images/image7.jpg')        frontal_face_classifier = cv2.CascadeClassifier('classifier/haarcascade_frontalface_default.xml')        image_in_gray_scale = cv2.cvtColor(group_of_people_image,cv2.COLOR_BGR2GRAY)               faces = frontal_face_classifier.detectMultiScale(image=image_in_gray_scale,scaleFactor=1.3, minNeighbors=6)               for (x_axis, y_axis, weight,height) in faces:            cv2.rectangle(group_of_people_image,(x_axis, y_axis), (x_axis + weight, y_axis + height), (255, 0, 0), 2)

该算法将图像转换为灰度图像,如前所述,这是分类器操作的一个基本步骤,然后我们使用dectedMultiScale函数搜索图像中的人脸,并通过绘制矩形来显示图像的位置,当定位人脸时结果如下:

Python中怎么实现一个面部识别功能

我们能够准确地分析两张出现的脸(采用矩形的方式将人脸框起来),有两个人完全正面地露出他们的脸,人脸完全显现,所以我们可以清楚地看到他的脸;另一个人只露出了面部的一部分,所以我们没有得到准确的信息来确认这是一张完整的人脸。

面部特征检测

Dlib是一个拥有一些分类器的库,可以帮助我们检测人脸的某些部分,例如:眼睛、眉毛、鼻子和洋娃娃的区域。以下图为例:

Python中怎么实现一个面部识别功能

现在,使用算法来识别图像中的面部特征点:

import cv2        import dlib        import numpy as np               initial_image = cv2.imread('images/image9.jpg')        initial_image_in_rgb = cv2.cvtColor(initial_image,cv2.COLOR_BGR2RGB)        reference_image = initial_image_in_rgb.copy()               classifier_path = dlib.shape_predictor('classifier/shape_predictor_68_face_landmarks.dat')        frontal_face_detector = dlib.get_frontal_face_detector()               rectangles =frontal_face_detector(initial_image,1)               for k, d inenumerate(rectangles):            cv2.rectangle(reference_image,(d.left(), d.top()), (d.right(), d.bottom()), (255, 255, 0), 2)               landmarks = []               for rectangle in rectangles:            landmarks.append(np.matrix([[p.x, p.y] for p inclassifier_path(reference_image,rectangle).parts()]))               for landmark in landmarks:            for index, point inenumerate(landmark):                point_center = (point[0, 0], point[0, 1])                cv2.circle(reference_image,point_center, 3, (255, 255, 0), -1)                cv2.putText(reference_image,str(index), point_center, cv2.FONT_HERSHEY_COMPLEX, 3, (255, 255, 255), 2)

我们使用的是人脸68个特征分类器,它试图更精确地理解点面,这给了我们更多的选择去分析结果,其缺点是速度有点慢。所以必须划定一个矩形来确定我们的脸可能在哪里,特征是我们可以识别的人脸特征,包括脸、嘴、眼睛、眉毛。

一旦用矩形的方式框出了脸,就可以使用功能部件将这些特征返回,最后将得到一些可视化的东西去生成一个带有面部点的图像。结果是:

Python中怎么实现一个面部识别功能

这些点对于帮助识别表情很重要,例如我们可以识别出这个男孩睁着眼睛,闭着嘴巴。把这看作是一种情绪的表现,可以说这个男孩很焦虑。当一个人微笑时,它可以帮助理解这种情绪可能表达的是幸福。

关于Python中怎么实现一个面部识别功能就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


文章题目:Python中怎么实现一个面部识别功能
转载源于:http://hbruida.cn/article/gedhgo.html