我叫杰瑞,是一名编程高手,经常发表一些有趣的编程教学文章,喜欢的小伙伴赶紧关注我吧!
人脸识别
各位同学帅气的杰瑞又来了,今天趁着闲下来的功夫给大家带来一个了非常有趣的教程,杰瑞今天会手把手教大家去实现人脸识别,就像支付宝的人脸识别那样,我们能够识别出视频或图片中的人脸,但是杰瑞今天教大家实现的这个人脸识别是无法分辨出具体哪一个人的,只能分辨出人脸、鼻子、耳朵等器官的位置,并将这些器官用一个框给标记起来。为什么无法识别出具体是哪一个人呢?因为杰瑞并没有一个庞大的人脸库作为支持!
那么废话不多说,杰瑞现在开始教大家一步步实现人脸识别功能!
教程开始
准备工作
杰瑞在这里使用python3.6实现人脸识别,另外需要用到opencv计算机视觉库和numpy数学库。这两个库的安装非常的简单,仅需要两句代码就可以完成。
在命令行输入以下命令即可安装相应的库(需要安装pip)
pip install opencv-python
pip install numpy
安装完成之后我们开始创建一个python文件并开始编写我们的代码,杰瑞在这里就使用sublime text作为编辑器。首先把我们需要用到的包导入到文件里面,就像下图那样:
到这里我们的准备工作就做完了,接下来我们将要创建两个级联分类器,分别用于检测人脸和眼睛。我们将用到CascadeClassifier类,它的参数就是以下两个文件的地址:
haarcascade_frontalface_default.xml
haarcascade_eye.xml
杰瑞把这两个分类器的xml文件和py文件放在同一个目录下面,所以只需要写出他们的名字就行了,一般这两个文件都是opencv自带的。他们的路径结构一般是这样的:
E:\python3.6\Lib\site-packages\cv2\data
读取需要检测的图片或者视频
杰瑞在这里以图片为例,我们使用cv.imread()方法加载我们需要检测的图片,然后把加载好的图片变成灰度图以便于快速检测,最后使用分类器的子函数对加载好的图片进行检测detectMultiScale()。
detectMultiScale()函数中第一个参数就是我们需要检测的图片,minSize参数是我们要检测范围的大小,剩下的参数大家就跟着杰瑞写就行了。
该函数会返回识别出来的目标的位置信息,我们可以借助这个信息使用cv2.rectangle()函数进行标注,这样我们就可以完整的实现人脸识别了。
最后我们将标注完成的图片显示出来。
效果展示
我们已经能正确的识别出人脸和眼睛了。
效果图
源码