获取人脸图片和训练人脸
基于树莓派的人脸识别门禁系统(python+OpenCV+PyQt)
技术难点:
- 登录界面准确的将数据输入到指定的 QLineEdit上
- 多线程实现识别人脸、录入人脸和加载进度条
- 获取人脸图片和训练人脸
- 实现人脸和姓名一一对应
获取人脸图片和训练人脸
我这里将获取的人脸照片存放到一个文件夹里面,将训练好的yml文件存放在另一个文件夹下面,如下,Face_data 存放的是人脸照片,Face_training 存放的是训练好的 yml 文件,faceReco.py 就是源码文件了,这三个文件都在同一级目录下。直接使用代码创建存放文件夹和训练文件夹。
1、捕获人脸照片
- 图像处理
- 创建文件夹(满权限创建,否则不能将图片写进文件夹)
- 捕获人脸照片并保存
# 创建目录,将获取的人脸照片放入指定的文件夹
self.file = "./Face_data/"while(True):ret, self.img = self.cap.read()# 垂直翻转视频图像self.img = cv2.flip(self.img, -1)# 灰度化处理gray = cv2.cvtColor(self.img, cv2.COLOR_BGR2GRAY)faces = faceCascade2.detectMultiScale(gray, 1.3, 5)# 判断是否存在文件夹如果不存在则创建为文件夹self.folder = os.path.exists(self.file)if not self.folder: # makedirs 满权限创建文件时如果路径不存在会创建这个路径os.makedirs(self.file) os.chmod(self.file,0777)for (x,y,w,h) in faces:cv2.rectangle(self.img, (x,y), (x+w,y+h), (255,0,0), 2) self.count += 1# 将捕获的图像保存到指定的文件夹中bool = cv2.imwrite(self.file + "/User." + str(self.Edit_ID.text()) + '.' + str(self.count) + ".png", gray[y:y+h,x:x+w])# 取60张人脸样本,停止录像if self.count >= 60: print("OK!")break
2、训练人脸
从数据集文件夹中载入训练图片,获取到人脸和id,整理成list并返回,人后调用函数进行训练
- 创建文件夹(满权限创建,否则不能将图片写进文件夹)
- 对捕获的人脸照片进行训练
- 将训练好的数据保存
# 函数获取图像和标签数据
def getImagesAndLabels(path):imagePaths = [os.path.join(path,f) for f in os.listdir(path)] faceSamples=[]ids = []self.progressBar.setProperty("value", 65)for imagePath in imagePaths:# 转换为灰度PIL_img = Image.open(imagePath).convert('L') img_numpy = np.array(PIL_img,'uint8')id = int(os.path.split(imagePath)[-1].split(".")[1])faces = faceCascade3.detectMultiScale(img_numpy)for (x,y,w,h) in faces:faceSamples.append(img_numpy[y:y+h,x:x+w])ids.append(id)return faceSamples,ids
self.progressBar.setProperty("value", 75)
print ("\n [INFO] Training faces. It will take a few seconds. Wait ...")# 调用函数,传递文件夹路径参数
faces,ids = getImagesAndLabels(self.file)
# 训练人脸
self.recognizer.train(faces, np.array(ids))
self.progressBar.setProperty("value", 85)# 创建文件夹
self.triningfile = "./Face_training/"
self.folder1 = os.path.exists(self.triningfile)
if not self.folder1: os.makedirs(self.triningfile) os.chmod(self.triningfile,0777)# 将训练好的数据保存到指定文件夹中
self.recognizer.write(self.triningfile + "/trainer.yml")# 打印经过训练的人脸编号和结束程序
print("\n [INFO] {0} faces trained. Exiting Program".format(len(np.unique(ids))))
self.progressBar.setProperty("value", 100)
获取人脸图片和训练人脸相关推荐
- 简单用Python+OpenCv实现AI人脸识别--(3)—训练人脸识别模型
案例引入 首先简要讲解数据集训练生成模型的原理,这里使用的是LBPH算法,在OpenCV模块中已经有内嵌的方法cv2.face.LBPHFaceRecognizer_create(),为了方便小伙伴们 ...
- 基于 PCA 的人脸识别系统及人脸姿态分析
文章目录 1 PCA 1.1 原理 1.2 算法流程 1.2.1 零均值化 1.2.2 计算协方差矩阵 1.2.3 特征值和特征向量 1.2.4 降维得到 K 维特征 1.2.5 PCA 的优缺点 2 ...
- 利用人脸微笑数据集训练识别模型,完成对人脸图片微笑识别
目录 一.数据集下载 二.提取人脸并判别是否为笑脸 (一)数据处理 (二)测试 三.视频识别并保存图片 四.总结 五.参考链接 一.数据集下载 1.链接:https://pan.baidu.com/s ...
- python照片过人脸_python openCV实现摄像头获取人脸图片
本文实例为大家分享了python openCV实现摄像头获取人脸图片的具体代码,供大家参考,具体内容如下 在机器学习中,训练模型需要大量图片,通过openCV中的库可以快捷的调用摄像头,截取图片,可以 ...
- opencv 训练人脸对比_【项目案例python与人脸识别】基于OpenCV开源计算机视觉库的人脸识别之python实现...
" 本项目是一个基于OpenCV开源库使用python语言程序实现人脸检测的项目,该项目将从[项目基础知识](即人脸识别的基本原理).[项目实践](人脸识别所需要的具体步骤及其python程 ...
- 目标检测 YOLO v3 训练 人脸检测模型
YOLO,是You Only Look Once的缩写,一种基于深度卷积神经网络的物体检测算法,YOLO v3是YOLO的第3个版本,检测算法更快更准. 本文源码:https://github.com ...
- matlab中识别过程训练,人脸识别PCA算法matlab实现及详细步骤讲解
%FaceRec.m %PCA人脸识别修订版,识别率88% %calc xmean,sigma and its eigen decomposition allsamples=[];%所有训练图像 fo ...
- 《OpenCv视觉之眼》Python图像处理十九:Opencv图像处理实战四之通过OpenCV进行人脸口罩模型训练并进行口罩检测
本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...
- Python+OpenCv实现AI人脸识别身份认证系统(3)——训练人脸识别模型
目录 案例引入 本节项目 最近有小伙伴们一直在催本项目的进度,好吧,今晚熬夜加班编写,在上一节中,实现了人脸数据的采集,在本节中将对采集的人脸数据进行训练,生成识别模型. 案例引入 首先简要讲解数据集 ...
- FSRNet:端到端深度可训练人脸超分辨网络
作者丨左育莘 学校丨西安电子科技大学 研究方向丨计算机视觉 这篇文章 FSRNet: End-to-End Learning Face Super-Resolution with Facial Pri ...
最新文章
- CSS那些事笔记(一入门)
- python写管理系统-基于Python实现用户管理系统
- Redis 总结精讲 看一篇成高手系统 四
- ZOJ 3720 Magnet Darts (计算几何,概率,判点是否在多边形内)
- PHP在浏览器中被拒绝请求,php控制请求页面浏览器缓
- Hadoop--克隆3x虚拟机
- Word中两端对齐、分散对齐的区别
- 基于spring-redis发布订阅模式的实现
- X86汇编语言从实模式到保护模式09:32位x86处理器编程架构
- openSSH服务及其应用
- 从C#开发人员到Windows Phone 7高级开发人员只需3周 – 序
- iOS底层探索之LLVM(一)——初识LLVM
- 汽车常识全面介绍 - 刹车系统
- c# wince 小技巧
- stata软件不出图_Stata软件的图形绘制—1
- 网站被黑了不要慌,4招教你如何破解!网站被黑的10大原因
- oracle adpatch 回退,Oracle EBS施用adpatch工具打patch过程
- LDAP管理用户数据,用户UserAccountControl属性详解
- 有关HTML的学习笔记
- 【GIT】git常用命令