python实现的人脸识别打卡系统

Python实现的人脸识别打卡系统

简介

人脸识别技术能够实现高精度的人脸识别和检测,应用广泛。本文将介绍如何使用Python语言实现一个简单的人脸识别打卡系统。

环境准备

  • Python 3.5+
  • OpenCV 4.x
  • face_recognition(Python人脸识别库)

实现步骤

步骤1:数据收集和预处理

收集一些图像用于训练系统。对这些图像进行人脸检测和特征提取,并保存到csv文件中。

示例代码:

import face_recognition
import cv2
import os
import numpy as np

# 数据收集: 将已知人物的图像读入并处理
known_face_encodings = []
known_face_names = []
for dirpath, dirnames, filenames in os.walk("known_faces"):
    for name in filenames:
        path = os.path.join(dirpath, name)
        image = face_recognition.load_image_file(path)
        face_locations = face_recognition.face_locations(image)
        face_encodings = face_recognition.face_encodings(image, face_locations)
        known_face_encodings.extend(face_encodings)
        known_face_names.extend([os.path.splitext(name)[0]] * len(face_encodings))

# 预处理: 将数据保存到csv文件中
np.savetxt("known_faces_encodings.csv", known_face_encodings, delimiter=",")
np.savetxt("known_faces_names.csv", known_face_names, fmt="%s")

步骤2:数据训练和模型保存

使用已经预处理好的csv文件,训练一个SVM分类器,并保存到文件中。

示例代码:

import numpy as np
from sklearn import svm

# 数据训练:读入已知数据,并训练SVM分类器
X = np.loadtxt("known_faces_encodings.csv", delimiter=",")
y = np.loadtxt("known_faces_names.csv", dtype=str)
clf = svm.SVC(gamma='scale')
clf.fit(X, y)

# 模型保存:将训练好的模型保存到文件中
joblib.dump(clf, "face_recognition_svc.pkl")

步骤3:实时人脸识别

打开摄像头,实时检测画面中的人脸,进行识别确认。

示例代码:

import cv2
import face_recognition
import joblib

# 加载SVM分类器和已知人脸的编码
clf = joblib.load("face_recognition_svc.pkl")
known_face_encodings = np.loadtxt("known_faces_encodings.csv", delimiter=",")

# 使用OpenCV打开摄像头,实时检测人脸并识别
video_capture = cv2.VideoCapture(0)
while True:
    # 读取摄像头画面,进行人脸检测和编码
    ret, frame = video_capture.read()
    small_frame = cv2.resize(frame, (0, 0), fx=0.25, fy=0.25)
    face_locations = face_recognition.face_locations(small_frame)
    face_encodings = face_recognition.face_encodings(small_frame, face_locations)

    # 遍历所有人脸编码,进行分类预测和识别
    for face_encoding in face_encodings:
        name = clf.predict([face_encoding])
        distance = face_recognition.face_distance(known_face_encodings, face_encoding)

        # 如果预测的人脸与已知人物匹配,并且距离比较小则认为已识别
        if name in known_face_names and min(distance) < 0.6:
            cv2.rectangle(frame, (left*4, top*4), (right*4, bottom*4), (0, 255, 0), 2)
            font = cv2.FONT_HERSHEY_DUPLEX
            cv2.putText(frame, name[0], (left*4+6, bottom*4-6), font, 2.0, (0, 255, 0), 1)

    # 显示识别结果
    cv2.imshow("video_capture", frame)
    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

# 释放摄像头并关闭窗口
video_capture.release()
cv2.destroyAllWindows()

总结

人脸识别技术已经广泛应用于打卡系统、安防、认证等场景。通过本文,我们介绍了如何使用Python编写一个简单的人脸识别打卡系统。在实现过程中,我们通过数据收集、预处理、训练和识别等步骤,实现了一个简单而实用的系统。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python实现的人脸识别打卡系统 - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • Java中获取MongoDB连接的方法详解

    Java中获取MongoDB连接的方法详解 在Java中使用MongoDB进行数据库操作,需要先获取到MongoDB的连接。本文将介绍如何使用Java获取MongoDB连接的方法。 1. Maven依赖 首先需要在Maven项目中添加MongoDB的依赖: <dependency> <groupId>org.mongodb</g…

    人工智能概论 2023年5月25日
    00
  • mdi文件是什么,mdi文件用什么打开

    MDI文件是什么? MDI文件是Microsoft Document Imaging的缩写,是一种图像格式,是一种微软开发的文件格式,用于保存扫描的图像或已经存在的图像。 MDI可以理解为图像格式的一种,与JPG、BMP等壁纸图片格式相似。 MDI文件用什么打开? MDI文件可以使用Microsoft Office Document Imaging(MODI…

    人工智能概览 2023年5月25日
    00
  • express+vue+mongodb+session 实现注册登录功能

    下面是详细讲解“express+vue+mongodb+session 实现注册登录功能”的完整攻略: 准备工作 首先,我们需要在本地安装Node.js和MongoDB,然后新建一个名为“project”的文件夹,用于存放我们的代码。接下来,进入“project”文件夹,并在命令行中执行以下命令来初始化我们的项目: npm init -y 安装依赖包 我们需…

    人工智能概论 2023年5月25日
    00
  • Python在Windows和在Linux下调用动态链接库的教程

    讲解Python在Windows和Linux下调用动态链接库的教程。 什么是动态链接库? 动态链接库(Dynamic Link Library,简称DLL)是一种可重用的程序代码解决方案。在Windows操作系统中,大量的Windows API都是通过DLL的形式提供给应用程序的。Linux操作系统中,相类似的动态链接库则被称为共享对象(Shared Obj…

    人工智能概论 2023年5月25日
    00
  • nginx负载均衡配置,宕机自动切换方式

    下面是详细讲解nginx负载均衡配置,宕机自动切换方式的完整攻略过程。 1. 安装nginx 首先需要在服务器上安装nginx,可以使用包管理器如apt-get或yum进行安装,也可以在官网下载源码进行编译安装。 2. 配置负载均衡 在nginx的配置文件中,可以使用upstream指令来定义后端服务器的列表,然后使用proxy_pass指令将请求转发到后端…

    人工智能概览 2023年5月25日
    00
  • Python分布式异步任务框架Celery使用教程

    Python分布式异步任务框架Celery使用教程 简介 Celery是Python编写的分布式异步任务队列,是一个优秀的基于消息传递的任务队列。Celery支持任务调度和消息分发,可以根据用户的需求创建多个任务队列,优化用户的任务处理效率。 安装 安装Celery可以使用官方推荐的方式通过pip进行安装。例如: pip install celery 安装好…

    人工智能概览 2023年5月25日
    00
  • Django验证码的生成与使用示例

    下面是关于“Django验证码的生成与使用示例”的完整攻略。 1. 生成验证码 在Django中,我们可以使用django-simple-captcha库来生成验证码。django-simple-captcha是一个轻量级的Django验证码应用,没有太多繁琐的设置,易于使用。 首先,需要安装django-simple-captcha库,可以通过以下命令实现…

    人工智能概论 2023年5月25日
    00
  • 详解在Python中以绝对路径或者相对路径导入文件的方法

    当我们在Python中编写代码时,可能需要导入其他的Python文件或模块以便实现更复杂的功能。在导入文件时,我们可以使用绝对路径或相对路径。接下来我会详细讲解如何在Python中使用绝对路径或相对路径导入文件。 使用绝对路径导入文件 使用绝对路径指的是直接指定文件的完整路径来导入文件,如“/home/user/project/file.py”。在Pytho…

    人工智能概览 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部