基于Opencv的面部识别功能

之前跟老师一起做基于openCV相关的项目所做的一些笔记和学习用工具
如果你喜欢这篇文章不妨点个赞+关注,你的支持是我更新的动力

材料:win10的电脑、普通电脑摄像头 、python2.6

库文件:os、keras(以theano作为backend)、opencv、numpy、sklearn

Opencv采用了Haar分类器,其中Haar分类器是Boosting的一个应用,其中boosting算法的核心思想是将弱学习提升成为强学习算法。

弱学习:对一组概念的识别率只比随机识别高一点。

强学习:对一组概念的识别率很高(只要足够的数据,弱学习可变成强学习)。

原理:

本学习内容采用了以OpenCV、以theano为后台的keras深度学习框架为核心采用了python2.7编写,利用了图片是以像素构成,且将每个图片转化成为灰度图片,图片的每个位置表示的是一个像素值,0表示白色,1表示黑色,(0,1)的数值表示不同程度的灰色组成,以两层卷积和两层池化将每张图片进行分类,通过OpenCV的Haar分类器检测出摄像头所捕获到的图片并利用提训练好的haarcascade_frontalface_alt.xml模型直接使用来实现对人脸的检测。

第一步:

利用OpenCV和frontalface分类器剪切图片同时将文件转化为灰度图片保存在指定文件夹中,其中利用OpenCV2中的detectMultiScale函数检测出图片中所有的人脸,其中该部分通过外部函数引入读取图片,其具体功能理解已加注释

图1

第二步:

这部分涉及到神经卷积网络,建立一个基于CNN的人脸识别模型,同时模型进行存储和读取的地方应通过hdf5创建一个后缀为h5的model文件。详细创建如下

图2

在dataSet.py文件夹中储存的DataSet这个用于存储和格式化读取训练数据的类其指向的地址为获取到的灰度图片,在def train_model(self)中修改了loss的值等于squared_hinge,由于在执行此文件的时候会报错

图3

第三步:

创建摄像头识别模型,并再次利用OpenCV的haarcascade_frontalface_alt.xml文件对摄像头所捕获到的图形进行识别,同时读取dataset下的子文件。利用opencv的VideoCapture类来调用摄像头,其中prob功能是用于设置对摄像头识别出来的人脸进行对比,并设置显示为模型已有的label概率

图4

第四步:

得到图像如下,只添加了一个个人的模型进文件中

结果图

如果你喜欢这篇文章不妨点个赞+关注,你的支持是我更新的动力
需要源码不妨私聊我哦~我们一起交流一下

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容