宝塔服务器面板,一键全能部署及管理,送你10850元礼包,点我领取

本文将详细介绍一个具有记忆功能的人脸识别门锁系统。该系统基于摄像头、主板和物理门锁,能够自动识别已录入的人脸特征并实现自动开门功能。我们将分析系统的各个部分,并提供相应的代码。

系统架构

  1. 摄像头:用于捕捉门前人脸图像;
  2. 主板:处理摄像头捕捉到的图像,执行人脸识别和比对任务;
  3. 物理门锁:与主板连接,实现自动开门功能;
  4. 记忆功能:存储已录入的人脸特征。

1. 准备工作

在开始之前,确保已经安装了以下库:

  • OpenCV:图像处理库
  • face_recognition:人脸识别库
  • RPi.GPIO:树莓派GPIO库

可以使用以下命令安装所需库:

pip install opencv-python
pip install face_recognition
pip install RPi.GPIO

2. 人脸录入

首先,我们需要创建一个人脸数据库,用于存储人脸特征。

import os
import face_recognitionface_database = {}def add_face(name, image_path):if name in face_database:print(f"{name} 已存在于数据库中。")returnimage = face_recognition.load_image_file(image_path)face_encoding = face_recognition.face_encodings(image)[0]face_database[name] = face_encodingprint(f"{name} 已成功录入人脸数据库。")

 

3. 人脸识别和比对

接下来,我们需要实现人脸识别和比对功能。当摄像头捕捉到人脸图像时,系统会自动进行识别和比对。

import cv2def recognize_faces(frame):frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)face_locations = face_recognition.face_locations(frame_rgb)face_encodings = face_recognition.face_encodings(frame_rgb, face_locations)for face_encoding in face_encodings:matches = face_recognition.compare_faces(list(face_database.values()), face_encoding)name = "未知"if True in matches:match_index = matches.index(True)name = list(face_database.keys())[match_index]return name

4. 控制物理门锁

当识别到已录入的人脸特征时,系统将控制物理门锁自动开门。

import RPi.GPIO as GPIO
import timeLOCK_PIN = 18GPIO.setmode(GPIO.BCM)
GPIO.setup(LOCK_PIN, GPIO.OUT)def unlock_door():GPIO.output(LOCK_PIN, GPIO.HIGH)time.sleep(5)GPIO.output(LOCK_PIN, GPIO

 

5. 主程序

现在,我们将以上功能组合到主程序中,实现人脸识别门锁系统。

def main():# 录入人脸特征add_face("张三", "zhangsan.jpg")add_face("李四", "lisi.jpg")# 打开摄像头cap = cv2.VideoCapture(0)while True:ret, frame = cap.read()if not ret:breakname = recognize_faces(frame)# 如果识别到已录入的人脸,自动开门if name != "未知":print(f"欢迎 {name}!")unlock_door()# 显示摄像头画面cv2.imshow('Video', frame)# 按下 'q' 键退出if cv2.waitKey(1) & 0xFF == ord('q'):break# 释放摄像头资源cap.release()cv2.destroyAllWindows()GPIO.cleanup()if __name__ == "__main__":main()

至此,我们已经完成了具有记忆功能的人脸识别门锁系统的实现。在实际应用中,可以根据需要调整摄像头分辨率、识别阈值等参数,提高系统的性能和稳定性。

查看全文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dgrt.cn/a/2211398.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章:

基于人脸识别的智能门锁系统-编程部落

基于人脸识别的智能门锁系统

本文将详细介绍一个具有记忆功能的人脸识别门锁系统。该系统基于摄像头、主板和物理门锁,能够自动识别已录入的人脸特征并实现自动开门功能。我们将分析系统的各个部分,并提供相应的代码。
系统架构
摄像头:用于捕捉门前人脸图像&#xff1……

基于人脸识别的智能门锁系统-编程部落

【云原生】kubenetes集群存活检查就绪检测—2023.04

文章目录1、存活探测2、就绪探测3、启动探测4、探针方式1、存活探测
liveness probe(存活探测器):用来探测服务是否存活。如果存活,则正常运行;如果已经死了活着运行状态不正常,即存活检测失败,k8s就会杀死该服务后重……

基于人脸识别的智能门锁系统-编程部落

8.类加载器的分类及基本知识

目录
一、在Java中,类加载器大致可以分为以下三类:
(1)启动(引导)类加载器(Bootstrap ClassLoader):
(2)扩展类加载器(Extension C……

基于人脸识别的智能门锁系统-编程部落

【java】面向过程的编程基础

文章目录hello world注释变量和常量final关键字整数类浮点类字符类布尔类型运算符赋值运算算术运算括号运算自增自减位运算关系逻辑运算代码块和作用域选择结构循环结构hello world
public class Main {public static void main(String[] args) {System.out.println("Hel……

基于人脸识别的智能门锁系统-编程部落

C 强制类型转换

C 强制类型转换
强制类型转换是把变量从一种类型转换为另一种数据类型。例如,如果您想存储一个 long 类型的值到一个简单的整型中,您需要把 long 类型强制转换为 int 类型。您可以使用强制类型转换运算符来把值显式地从一种类型转换为另一种类型&#x……

基于人脸识别的智能门锁系统-编程部落

Python应用框架Scrapy2.8.0详解(最新版本)

1、概述
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的开源应用框架,就像Java中的Spring、Mybatis框架一样。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。
Scrapy特点:
快速而强大:开……

基于人脸识别的智能门锁系统-编程部落

Mac系统清理软件有必要安装CleanMyMac吗 Mac电脑怎么彻底清理卸载的软件

因为Mac电脑相比与其他品牌电脑有着较大优势,例如:流畅的Mac系统,强大的设备互联能力等,所以现在使用Mac电脑的人越来越多。与此同时,对于Mac电脑需不需要清理软件的讨论越来越多,究竟需不需要在Mac上下载一……

基于人脸识别的智能门锁系统-编程部落

C语言课设项目-51单片机-51单片机介绍

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录
学单片机需要什么基础?
什么是单片机?
单板机:
单片机:
单片机能……

基于人脸识别的智能门锁系统-编程部落

自然语言模型发展历程 及 Transformer GPT Bert简介

目录自然语言模型发展历程2003 年 Bengio 提出神经网络语言模型 NNLM,统一了 NLP 的特征形式——Embedding;2013 年 Mikolov 提出词向量 Word2vec,延续 NNLM 又引入了大规模预训练(Pretrain)的思路;2017 年……

基于人脸识别的智能门锁系统-编程部落

阿里云ECS服务器c5和t6哪个好区别是什么?

阿里云服务器c5和t6哪个好?当然是c5更好,c5是ECS计算型c5实例,c5是企业级独享型云服务器;t6是ECS突发性能t6实例,不仅是共享型云服务器,而且还是限制CPU基准性能的云服务器,每台t6实例会根据实际……

基于人脸识别的智能门锁系统-编程部落

反序列化渗透与攻防(五)之shiro反序列化漏洞

Shiro反序列化漏洞
Shiro介绍
Apache Shiro是一款开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性
Apache Shiro 1.2.4及以前版本中,加密的用户信息序列化后存储在名为remember-me的Cookie中。攻击者可以使用Shiro的默……

基于人脸识别的智能门锁系统-编程部落

vue2+vue3

vue2vue3尚硅谷vue2vue2 课程简介【02:24】vue2 Vue简介【17:59】vue2 Vue官网使用指南【14:07】vue2 搭建Vue开发环境【13:54】vue2 Hello小案例【22:25】了解: 不常用常用:id 更常用 简单class差值总结vue 实例vue 模板 : 先 取 &#xff0……

基于人脸识别的智能门锁系统-编程部落

【hello Linux】环境变量

目录 1. 环境变量的概念 2. 常见的环境变量 3. 查看环境变量 4. 和环境变量相关的命令 5. 环境变量的组织方式 6. 通过代码获取环境变量 7. 通过系统调用获取环境变量 Linux🌷 在开始今天的内容之前,先来看一幅图片吧! 不知道你们是否和我一……

基于人脸识别的智能门锁系统-编程部落

【Linux基础】常用命令整理

ls命令
-a选项,可以展示隐藏的文件和文件夹-l选项,以列表形式展示内容-h,需要和-l搭配使用,可以展示文件的大小单位ls -lah等同于la -a -l -h
cd命令(change directory)
语法:cd [Linux路径]……

基于人脸识别的智能门锁系统-编程部落

客快物流大数据项目(一百一十二):初识Spring Cloud

文章目录
初识Spring Cloud
一、Spring Cloud简介
二、SpringCloud 基础架构图…

基于人脸识别的智能门锁系统-编程部落

C和C++中的struct有什么区别

区别一: C语言中: Struct是用户自定义数据类型(UDT)。 C语言中: Struct是抽象数据类型(ADT),支持成员函数的定义。
区别二:
C中的struct是没有权限设置的&#xff0c……

基于人脸识别的智能门锁系统-编程部落

docker的数据卷详解

数据卷 数据卷是宿主机中的一个目录或文件,当容器目录和数据卷目录绑定后,对方修改会立即同步
一个数据卷可以同时被多个容器同时挂载,一个容器也可以被挂载多个数据卷
数据卷作用:容器数据持久化 /外部机器和容器间接通信 /容器……

基于人脸识别的智能门锁系统-编程部落

13、Qt生成dll-QLibrary方式使用

Qt创建dll,使用QLibrary类方式调用dll
一、创建项目
1、新建项目->其他项目->Empty qmake Project->Choose 2、输入项目名,选择项目位置,下一步 3、选择MinGW,下一步 4、完成 5、.pro中添加TEMPLATE subdirs&#xff……

基于人脸识别的智能门锁系统-编程部落

基于mapreduce 的 minHash 矩阵压缩

Minhash作用: 对大矩阵进行降维处理,在进行计算俩个用户之间的相似度。
比如: 俩个用户手机下载的APP的相似度,在一个矩阵中会有很多很多的用户要比较没俩个用户之间的相似度是一个很大的计算任务 如果首先对这个矩阵降维处理&am……

基于人脸识别的智能门锁系统-编程部落

关于hashmap使用迭代器的问题

keySet获得的只是key值的集合,valueSet获得的是value集合,entryset获得的是键值对的集合。 package com.test2.test;import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;public class mapiterator……