OpenMV4人脸识别门禁系统设计与实现
2026-04-10 来源:EEWorld 论坛
人脸识别门禁系统设计与实现
作者:Juggernaut
一、作品简介
随着科技的不断发展,人们的生活水平得到了极大的提升,与此同时人们对安全的要求也越来越高。门锁一直是一个家庭安全保障的关键性物件,门锁的发展更是经历了从普通物理门锁到密码锁、指纹锁到其它更高级利用生物特征识别技术的门锁,其中人脸识别技术为主的多功能的智能门锁成为智慧家居领域发展中极为重要一环。
本项目主要设计一个人脸识别门禁系统,采用星瞳科技的OpenMV4 H7 R2既承担主控功能,也承担摄像头主体,同时外接MG90S舵机用于模拟门锁打开和关闭。通过OpenMV4摄像头进行人脸识别,并检查是否为特定人员,如果是则打开门禁并亮绿灯,相反则红灯闪烁,提示非法用户。
二、系统设计
OpenMV4摄像头承担2个功能:主控和摄像头。首先循环采集图像,比对OpenMV4中已经保存的人脸特征,找出最匹配的人脸。如果是则通知舵机运转,同时打开绿色LED提示开门;否则打开红色LED告警。具体业务流程为:图像采集、人脸检测、特征比对、控制输出。
三、项目硬件
- OpenMV4摄像头
OpenMV4摄像头是一款小巧,低功耗,低成本的电路板,可以很轻松的完成机器视觉应用。可以通过高级语言Python脚本(准确的说是MicroPython)进行编程。OpenMV4搭载STM32H743VI ARM Cortex M7 处理器,480 MHz,内置1MB RAM和2 MB flash。 - MG90S舵机
MG90S是一个360度舵机,通过输出PWM波来控制。舵机会根据信号的占空比来计算需要转动的速度和方向,用于模拟门锁的开关。
四、具体实现
- 本地样本图像库
在OpenMV4摄像头的TF卡中新建singtown文件夹,其中再新建10个人员文件夹,按照序号,第一个人的图片保存到s1文件夹,第二个人的图片保存到s2文件夹,以此类推,用于人脸检测比对。 - 人脸检测
由于OpenMV4性能有限,使用LBP特征进行人脸识别。具体源码如下:import sensor, time, image from pyb import Servo from pyb import LED sensor.reset() # Initialize the camera sensor. s1 = Servo(1) # P7 red_led = LED(1) green_led = LED(2) sensor.set_pixformat(sensor.GRAYSCALE) sensor.set_framesize(sensor.HQVGA) sensor.set_windowing((92,112)) sensor.skip_frames(10) # Let new settings take affect. sensor.skip_frames(time = 5000) #等待5s NUM_SUBJECTS = 2 NUM_SUBJECTS_IMGS = 20 img = sensor.snapshot() d0 = img.find_lbp((0, 0, img.width(), img.height())) #d0为当前人脸的lbp特征 img = None pmin = 999999 num=0 def min(pmin, a, s): global num if a<pmin: pmin=a num=s return pmin for s in range(1, NUM_SUBJECTS+1): dist = 0 for i in range(2, NUM_SUBJECTS_IMGS+1): img = image.Image("singtown/s%d/%d.pgm"%(s, i)) d1 = img.find_lbp((0, 0, img.width(), img.height())) #d1为第s文件夹中的第i张图片的lbp特征 dist += image.match_descriptor(d0, d1) pmin = min(pmin, dist/NUM_SUBJECTS_IMGS, s) print(pmin) print(num) if num == 2: img.draw_rectangle(r) s1.angle(100) # 控制舵机旋转到100度 green_led.on() time.sleep(3) # 等待3秒钟 s1.angle(0) # 将舵机归位到0度 green_led.off() else: red_led.on() time.sleep(3) # 等待3秒钟 red_led.off() - 舵机控制
使用OpenMV的Servo库,人脸识别准确时旋转100度,等待3秒后归位。s1.angle(100) # 控制舵机旋转到100度 time.sleep(3) # 等待3秒钟 s1.angle(0) # 将舵机归位到0度 - LED控制
使用OpenMV的LED库,人脸识别准确时绿灯亮3秒,错误时红灯亮3秒。red_led.on() time.sleep(3) # 等待3秒钟 red_led.off()
五、运行测试
系统进行了实际测试,通过OpenMV4摄像头识别特定人脸,并控制舵机模拟门锁开关,同时LED指示灯相应变化。测试结果表明,系统能够准确识别人脸并执行相应操作。
更多详细测试内容和视频,请查看原帖子。
最后,感谢DigiKey和eeworld组织的活动。
本文基于原帖子整理,如需查看完整内容、图片和视频,请访问:【2024 DigiKey 创意大赛】人脸识别门禁系统设计与实现
原帖子内容来源:https://bbs.eeworld.com.cn/thread-1298155-1-1.html
相关文章
- 从云到边缘,再到物理世界:Microchip重构AI落地路径
- 得捷电子Follow me第4期项目总结:W5500-EVB-Pico与lwip网络应用开发
- 得捷电子Follow me第4期项目总结报告:W5500-EVB-Pico网络应用开发
- Teledyne e2v 启动面向宇航应用的16GB DDR4 X1飞行正片的量产
- 英特尔 "Nova Lake S" 处理器确认归属第四代酷睿 Ultra,2026Q4 量产
- 树莓派PicoW小车速度与距离控制实现详解
- rk3399平台MNN推理引擎benchmark测试:CPU与GPU性能对比
- pyarmnn图像分类推理入门教程
- RV1106 USB摄像头实时yolov5推理教程
最新频道文章




