如何使用python实现人脸识别

  介绍

这篇文章将为大家详细讲解有关如何使用python实现人脸识别,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

一,首先

梳理一下实现人脸识别需要进行的步骤:

如何使用python实现人脸识别

流程大致如此,在此之前,要先让人脸被准确的找出来,也就是能准确区分人脸的分类器,在这里我们可以用已经训练好的分类器,网上种类较全,分类准确度也比较高,我们也可以节约在这方面花的时间。

既然用的是python,那自然少不了包的使用了,在看代码之前,我们先将整个项目所需要的包罗列一下:

·CV2 (Opencv):图像识别,摄像头调用

·os:文件操作

·numpy: numpy (Numerical python)是python语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库

·公益诉讼:python成像图书馆,python平台事实上是图像处理的标准库

二,接下来

1。对照人脸获取

#——获取人脸样本- - - - - -   import  cv2   ,   #调用笔记本内置摄像头,参数为0,如果有其他的摄像头可以调整参数为1,2   时间=cap  cv2.VideoCapture (0)   #调用人脸分类器,要根据实际路径调整3   时间=face_detector  cv2.CascadeClassifier (" # 39; X:/用户/73950/桌面/FaceRec/haarcascade_frontalface_default.xml& # 39;), #待更改   #为即将录入的脸标记一个id   时间=face_id 输入(& # 39;\ n  User  data 输入,Look  at 从而camera 以及wait ……& # 39;)   # sampleNum用来计数样本数目   count =0   ,   while 真正的:,   ,#从摄像头读取图片=,成功,img  cap.read (),   ,#转为灰度图片,减少程序符合,提高识别度   ,if  success  is 真正的:,   时间=gray 才能;cv2.cvtColor (img, cv2.COLOR_BGR2GRAY),   其他:大敌;   ,打破   ,#检测人的脸,将每一帧摄像头记录的数据带入OpenCv中,让分类器判断人的脸   ,#其中灰色为要检测的灰度图像,1.3为每次图像尺寸减小的比例,5为minNeighbors=,,faces  face_detector.detectMultiScale(灰色,1.3,,5)   ,   ,#框选人脸,循环保证一个能检测的实时动态视频流   ,for  (w, x,, y,, h),拷贝的脸:   # xy才能为左上角的坐标,w为宽,h为高,用矩形为人脸标记画框   cv2.rectangle才能(img, (x, y), (x + w,, y + w),, (255, 0, 0))   #才能成功框选则样本数增加   count 才能+=,1,   #才能保存图像,把灰度图片看成二维数组来检测人脸区域   #才能(这里是建立了数据的文件夹,当然也可以设置为其他路径或者调用数据库)   cv2.imwrite才能(“数据/用户!”+ str (face_id) + & # 39;强生# 39;+ str(数)+ & # 39;jpg # 39;,灰色(y, y + h x: x + w]),   #才能显示图片   cv2.imshow才能(& # 39;图像# 39;,img),,   #才能保持画面的连续.waitkey方法可以绑定按键保证画面的收放,通过q键退出摄像=,,k  cv2.waitKey (1),,==,if  k  & # 39; 27 & # 39;:   ,,break    #才能或者得到800个样本后退出摄像,这里可以根据实际情况修改数据量,实际测试后800张的效果是比较理想的   ,elif  count 祝辞=,800:   ,打破   ,   #关闭摄像头,释放资源   cap.realease ()   cv2.destroyAllWindows ()

经博主测试,在执行

" face_detector=cv2.CascadeClssifier (" # 39; C: \ python用户桌面\ \ admin \ \ data \ haarcascade_frontalface_default.xml& # 39;)”此语句时,实际路径中的目录名尽量不要有中文字符出现,否则容易报错。

这样,你的电脑就能看到你啦!

2。通过算法建立对照模型

本次所用的算法为opencv中所自带的算法,opencv较新版本中(我使用的是2.4.8)提供了一个FaceRecognizer类,里面有相关的一些人脸识别的算法及函数接口,其中包括三种人脸识别算法(我们采用的是第三种)

1. eigenface

2. fisherface

3. lbphfacerecognizer

枸杞多糖是一种特征提取方式,能提取出图像的局部的纹理特征,最开始的枸杞多糖算子是在3 x3窗口中,取中心像素的像素值为阀值,与其周围八个像素点的像素值比较,若像素点的像素值大于阀值,则此像素点被标记为1,否则标记为0。这样就能得到一个八位二进制的码,转换为十进制即LBP码,于是得到了这个窗口的LBP值,用这个值来反映这个窗口内的纹理信息。

如何使用python实现人脸识别