如下图,dlib人脸数据把人脸分成了68个数据点,从图片可以看出,人脸识别紧张是识别:人眉,人眼,人鼻,人嘴以及人脸下颚边框,每个人脸的部位都有不同的数据标签从1-68

当我们识别出人脸的这68个点,可以通过访问不同的数据点来检测到人脸的部分数据

· 口可以访问 [48,68]· 右眉可以访问 [17,22]· 左眉可以访问 [22,27]· 右眼可以访问 [36,42]· 左眼 可以访问 [42,48]· 鼻可以访问 [27,35]· 下巴边框可以访问 [0,17]

通过访问不同的数据点,来进行人脸上的部位检测

人脸68点数据

opencv 与python进行人脸鼻子嘴巴眼睛眉毛的零丁检测

我们可以建立一个数组来访问不同的人脸部分

FACIAL_LANDMARKS_IDXS = OrderedDict([

(\"大众mouth\"大众, (48, 68)),

(\"大众right_eyebrow\"大众, (17, 22)),

(\公众left_eyebrow\"大众, (22, 27)),

(\"大众right_eye\公众, (36, 42)),

(\"大众left_eye\公众, (42, 48)),

(\"大众nose\"大众, (27, 35)),

(\公众jaw\"大众, (0, 17))

])

第三方库from imutils import face_utils中的face_utils已经集成了人脸部分的数据以及格式化代码,我们可以直接来利用它来进行人脸部分的检测

· 导入我们所需的Python包(第1-5行)

· 实例化dlib 面部检测器并加载面部界标预测器(第8行和第10行)。

· 加载和预处理我们的输入图像(第13-17行)。

·

· 在输入图像中检测人脸(第20行)

· 循环检测到的人脸,格式化人脸数据(第22-26行)

· 循环人脸部分,把人脸部分的标签显示在图片上(29-34行)

·

单独显示人脸部分的数据点(37-38行)

提取人脸部分的图片来进行显示(41-43行)

末了显示图片

通过以上的代码循环,可以来检测人脸部分,首先检讨到的是人嘴,如下图

然后是旁边眉毛

然后是旁边人眼

然后是人鼻子

末了是人脸的边框

人脸检测完成后利用mask来进行人脸的显示

利用mask来进行人脸部分的显示(51-53行)

通过以上步骤,我们便可以分别检测到人脸的部分地方,当然也可以检测到人眼,在人脸识别中,有一个比较困难的地方便是如何区分这个人脸是一个人正常的或者说不是一个照片,以免别人拿到照片也可对人脸进行检测,我们利用支付宝或者微信时,进行人脸识别时,有时候哀求进行眨眼睛,通过此方法便可以有效的识别不是人脸照片,如何进行人脸的眨眼睛,我们后期分享