人脸识别系统

简介: 人脸识别系统

项目简介


在文件夹中上传自己的图片,对自己的图片进行训练,得到训练后的yml文件。调用yml文件,配合人脸数据集,识别电脑摄像头中的人脸,判断是否是自己。如果置信评分符合要求,则将向数据库插入一条数据,数据包括检测成功时间。


训练数据


图片的命名要求是数字,放在这个地址下面

path='./data/mydata/'

然后运行python程序,就得到trainer文件夹下trainer1.yml文件。


1. import os
2. import cv2
3. import sys
4. from PIL import Image
5. import numpy as np
6. def getImageAndLabels(path):
7.     facesSamples=[]
8.     ids=[]
9.     imagePaths=[os.path.join(path,f) for f in os.listdir(path)]
10. #检测人脸
11.     face_detector = cv2.CascadeClassifier(
12. './haarcascade/haarcascade_frontalface_default.xml')
13. 
14. #遍历列表中的图片
15. for imagePath in imagePaths:
16. #打开图片
17.         PIL_img=Image.open(imagePath).convert('L')
18. #将图像转换为数组
19.         img_numpy=np.array(PIL_img,'uint8')
20.         faces = face_detector.detectMultiScale(img_numpy)
21. #获取每张图片的id
22. id=int(os.path.split(imagePath)[1].split('.')[0])
23. for x,y,w,h in faces:
24.             facesSamples.append(img_numpy[y:y+h,x:x+w])
25.             ids.append(id)
26. return facesSamples,ids
27. 
28. if __name__ == '__main__':
29. #图片路径
30.     path='./data/mydata/'
31. #获取图像数组和id标签数组
32.     faces,ids=getImageAndLabels(path)
33. #获取训练对象
34.     recognizer=cv2.face.LBPHFaceRecognizer_create()
35.     recognizer.train(faces,np.array(ids))
36. #保存文件
37.     recognizer.write('trainer/trainer1.yml')

检测摄像头中的人脸并插入数据库


我们这里先建立了与本地数据库的连接,然后定义了插入数据库的函数。同时编写了人脸检测的函数,如果得到的置信评分小于60,我们认为检测到了正确的人,则调用插入数据库的函数。

主函数中调用了电脑内置摄像头,将图片传给人脸检测函数。


1. 
2. import cv2 as cv
3. import time
4. import pymysql
5. 
6. id = 5
7. def insert_sql():
8. # 建立连接
9.     conn = pymysql.connect(
10.         host="localhost",
11. # host="192.168.1.112",
12.         user="root",  # 用户名
13.         passwd="youpassword",  # 用户密码
14.         db="检测小车")  # 数据库名
15. 
16. global id
17. # 创建游标,默认是元组型
18.     cursor = conn.cursor()
19. # sql = "select * from t_plane"#数据库中表的名
20.     sql = '''INSERT INTO t_plane(id,x,y) VALUES(num,7,2);'''  # 数据库中表的名
21.     sql = sql.replace("num", str(id))
22.     cursor.execute(sql)
23.     conn.commit()
24. id += 1
25.     cursor.close()
26.     conn.close()
27. 
28. 
29. # 加载训练数据集文件
30. recogizer=cv.face.LBPHFaceRecognizer_create()
31. recogizer.read('trainer/trainer1.yml')
32. 
33. # 加载特征数据
34. face_detector = cv.CascadeClassifier(
35. './haarcascade/haarcascade_frontalface_default.xml')
36. 
37. def face_detect_demo(img):
38. #将图片灰度
39.     gray=cv.cvtColor(img,cv.COLOR_BGR2GRAY)
40.     faces = face_detector.detectMultiScale(gray)
41.     ans = []
42. for x, y, w, h in faces:
43.         cv.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)
44. # 人脸识别
45. id, confidence = recogizer.predict(gray[y:y + h, x:x + w])
46. # print('标签id:', id, '置信评分:', confidence)
47. print(confidence)
48.         ans.append(confidence)
49. 
50.     cv.namedWindow('result', 0)
51.     cv.resizeWindow('result', 600, 500)
52.     cv.imshow('result', img)
53. 
54. if ans == []:
55. return
56. elif min(ans) < 60:
57. print("符合标准")
58.         insert_sql()
59.         time.sleep(1)
60. 
61. #读取视频
62. # cap=cv.VideoCapture('video.mp4')
63. # cap=cv.VideoCapture('test.mp4')
64. cap= cv.VideoCapture(0)  # 0为电脑内置摄像头
65. 
66. while True:
67. # cap = cv.VideoCapture(0)
68.     flag,frame=cap.read()
69. # print('flag:',flag,'frame.shape:',frame.shape)
70. if not flag:
71. break
72. # cv.imshow("video", frame)
73.     face_detect_demo(frame)
74. if ord('q') == cv.waitKey(10):
75. break
76. 
77. cv.destroyAllWindows()
78. cap.release()


项目地址


人脸识别系统: 人脸识别系统

目录
相关文章
|
3月前
|
机器学习/深度学习 监控 算法
m基于深度学习网络的活体人脸和视频人脸识别系统matlab仿真,带GUI界面
m基于深度学习网络的活体人脸和视频人脸识别系统matlab仿真,带GUI界面
40 0
|
28天前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
56 7
|
3月前
|
算法 安全 搜索推荐
深入浅出:使用Python实现人脸识别系统
在当今数字化时代,人脸识别技术已成为安全验证、个性化服务等领域的关键技术。本文将引导读者从零开始,逐步探索如何利用Python和开源库OpenCV来构建一个基础的人脸识别系统。本文不仅会详细介绍环境搭建、关键算法理解,还会提供完整的代码示例,帮助读者理解人脸识别的工作原理,并在实际项目中快速应用。通过本文,您将能够掌握人脸识别的基本概念、关键技术和实现方法,为进一步深入学习和研究打下坚实的基础。
|
3天前
|
传感器 人工智能 前端开发
JAVA语言VUE2+Spring boot+MySQL开发的智慧校园系统源码(电子班牌可人脸识别)Saas 模式
智慧校园电子班牌,坐落于班级的门口,适合于各类型学校的场景应用,班级学校日常内容更新可由班级自行管理,也可由学校统一管理。让我们一起看看,电子班牌有哪些功能呢?
43 4
JAVA语言VUE2+Spring boot+MySQL开发的智慧校园系统源码(电子班牌可人脸识别)Saas 模式
|
3月前
|
小程序 JavaScript Java
android电子班牌人脸识别系统源码
智慧校园云平台全套源码包含:电子班牌管理系统、成绩管理系统、考勤人脸刷卡管理系统、综合素养评价系统、请假管理系统、电子班牌发布系统、校务管理系统、小程序移动端、教师后台管理系统、SaaS运营云平台。
35 1
|
3月前
|
机器学习/深度学习 XML 数据库
深入浅出:使用Python实现人脸识别系统
在本文中,我们将探索如何使用Python和开源库OpenCV来构建一个基础的人脸识别系统。不同于传统的技术文章摘要,这里我们将以故事化的方式引入问题背景,带领读者从零开始,逐步深入到人脸识别技术的核心原理和实现过程中。我们将讨论人脸识别技术的基本概念、所面临的挑战、以及如何通过Python代码解决这些问题。最终,读者将获得足够的知识和技能,去实现一个简单的人脸识别系统,为进一步的学习和研究打下坚实的基础。
|
4月前
|
机器学习/深度学习 算法 计算机视觉
基于yolov2网络的人脸识别系统matlab仿真,包括识别正脸,侧脸等
基于yolov2网络的人脸识别系统matlab仿真,包括识别正脸,侧脸等
|
4月前
|
Java 数据安全/隐私保护 计算机视觉
基于JSP/SERVLET实现的人脸识别考勤系统(二)
基于JSP/SERVLET实现的人脸识别考勤系统
|
4月前
|
Java 关系型数据库 数据库
基于JSP/SERVLET实现的人脸识别考勤系统(一)
基于JSP/SERVLET实现的人脸识别考勤系统
|
5月前
|
Java 关系型数据库 数据库
基于JSP/SERVLET实现的人脸识别考勤系统
基于JSP/SERVLET实现的人脸识别考勤系统

热门文章

最新文章