大学Python课期末项目,代码稚嫩,文辞粗浅,只是记录一下自己的大学项目历程。
- 项目概述
在我们的日常生活中,无论是支付还是上下班打卡都离不开人脸识别这一功能,这个功能具有很强的安全性和便利性,可以帮助我们通过人脸匹配得到很多数据。
一个基于python的opencv人脸识别项目,通过保存的图片进行灰度处理训练数据后可实现人脸的检测和识别功能。
目标:
1.检测人脸
2.识别对应自己训练集中的人脸
工具:
1.Python
2.pycharm
3.OpenCV
环境配置:在下载了python和pycharm之后,需要下载opencv包,可以cmd通过pip下载。
pip install opencv-python
pip3 install opencv-python -i pypi.tuna.tsinghua.edu.cn/simple
一般来说使用国内镜像下载更快,更不容易连接超时。
下载号opencv python包之后,需要在官网下载OPENCV数据包。
下载好之后需要更新我们的环境变量,在我的电脑-右键-属性-高级程序设置-环境变量-path属性中把opencv的路径更新一下环境配置差不多就完成了。
2. 项目步骤
步骤1:首先学会使用python打开图片。
首先导入我们的cv模块(以下步骤均需要导入该模块)
通过cv模块中的cv.imread可读取路径中的图片,再通过cv.imshow可显示当前图片,通过waitkey的方法可以使当前窗口展示且不刷新(图片检测均需要让key值为0),最后释放内存即可。
步骤2:灰度转换,opencv的识别器是通过灰度图片中的人脸进行检测,所以需要我们在检测前将图片转为灰度图片。只需要在原来代码的基础上添加cv.cvtcolor的方法。
步骤3:修改尺寸,由于我们后续的训练图片需要统一规格,所以我们每张照片就需要统一尺寸。在原来代码的基础上添加cv.resize的方法。
步骤4:绘制一个矩形或圆形,我们需要一个目标框将我们的人脸框住,所以就需要绘制一个几个图形。
首先我们需要基准坐标和矩形长宽,这里我们初始化为100,对于矩形来说,在原坐标的位置基础上,以基准坐标为中心,绘制一个x+w,y+h的矩形,颜色和宽度均可调整。
步骤5:人脸检测,这一步需要我们使用opencv数据包中的xml检测工具,找倒我们opencv文件夹-sources-data-haarcascades- haarcascade_frontalface_alt2.xml。这里我默认使用正脸检测。将该路径复制粘贴到我们的分析器中。
此时的face_detect就是我们的人脸识别器。我们将灰度图片进行人脸识别。
其中的参数分别为,颜目标图像、识别度(分辨率)、检测几次出现人脸、默认0,人脸识别最小尺寸,人脸识别最大尺寸。
当我们获取了已识别人脸face之后我们就需要把我们绘制的图形放在我们的人脸上了,还是通过基准坐标和矩阵长宽来绘制。
检测一个:
检测多个:
步骤6:训练数据,当我们有了照片之后就需要进行数据的训练,这里我们需要将照片进行人物进行编号和命名,并获得我们放照片的文件夹。
这里我们需要自己去遍历照片来获取人脸数据和id号。
首先将我们有的所有照片存在数据中然后遍历,把每张照片灰度化,将我们获得的图像转换为数据(使用np.array(PIL_img, ‘uint8’)方法),再通过detectMultiScale方法将图片人脸特征获取下来,将每张获得面容的照片编号和命名。
把我们获得的人脸数据和id用参数存起来。
使用cv2.face.LBPHFaceRecognizer_create()方法获取当前数据并使用train开始训练。
最后将我们的数据存在一个yml文件当中。
步骤7:人脸识别,首先加载我们上一步训练好的数据,准备好我们识别的照片,也可以开启摄像头检测我们人脸。将我们的照片先转为灰度,并且添加上我们的识别器并获取我们的人脸。然后开始绘制我们人脸的矩形和圆形,然后使用recogizer.predict比对我们的人脸数据库和当前照片的数值
(之前存的数值)获得一个置信评分,当我们的有80%以上的相似度时,则在我们的边框上添加姓名。
- 项目实列
1.人脸检测:
1.多人检测:
1.图片识别:
1.多人识别:
3.总结
该项目通过使用opencv完成人脸识别功能,通过人脸检测,绘制图形。可以根据需求进行人脸存储、检测、识别等功能。
今天的文章自学项目之opencv人脸识别分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/22356.html