发布时间:2026/8/11 7:01:08
入门实践工程十一:人脸识别门禁系统(基于 face_recognition)~附:安装依赖库及工程源码 别再死磕枯燥理论了AI 时代拿实战作品说话才是硬道理原创不易哈希望可以帮到还有些许学习劲儿的同学们【进阶版还在创作中耗费精力中……】跳转到专栏目录你学习更有方向和思路……入门实践工程十一人脸识别门禁系统基于 face_recognition~附:安装依赖库及工程源码简介基于face_recognition库先对录入人员照片做特征编码入库再用摄像头或图片识别已知人员并标记姓名实现简易门禁/考勤 Demo支持多人脸同时识别理解「人脸检测→特征编码→余弦相似度匹配」链路。工程详细介绍核心思想人脸识别 检测 特征编码 比对。先用预训练模型把人脸映射为 128 维嵌入同一人相近、不同人远离再把待识别人脸嵌入与入库嵌入做距离比对最近且过阈即判定身份是「度量学习」的典型应用。实现方法数据 / 输入人员库照片known_faces/文件名即人名 待识别图片或摄像头。模型face_recognition基于 dlib 的 ResNet 人脸嵌入模型。流程register 模式把人员照编码入库识别时对图片做人脸检测 编码 → compare_faces 逐个比对待选嵌入tolerance0.6→ 匹配则标名、未知标红摄像头模式逐帧实时框选–demo 下载示例数据自动跑通。输出每张人脸身份 绿/红框标注图。目录结构11_face_recognition/ ├── main.py # 录入 / 图片识别 / 摄像头识别主程序 ├── requirements.txt ├── known_faces/ # 人员库文件名即人员名如 张三.jpg └── output/ └── recognized.jpg # 标注结果图正确安装face_recognition依赖dlibWindows 上安装较麻烦# 需先安装 CMake 和 Visual Studio Build ToolsC 桌面开发组件pipinstallcmake pipinstalldlib pipinstallface_recognition opencv-python若 dlib 编译失败可改用 condaconda install -c conda-forge dlib face_recognition运行方式# 一键 Demo下载示例人物(Obama/Biden)合照自动跑通python main.py--demo# 录入人员python main.py--register张三 path/to/zhangsan.jpg# 识别图片中的人脸python main.py--imagetest.jpg# 摄像头实时识别按 q 退出python main.py--camera预期结果控制台逐张打印识别出的人员名未知则标「未知人员」生成output/recognized.jpg绿框(已知)/红框(未知) 姓名标注扩展方向换用 InsightFace / ArcFace 提升精度与速度增加活体检测眨眼/转头检测防照片攻击接入数据库做考勤打卡记录 Web 后台工程源码main.py 入门实践工程十一人脸识别门禁系统基于 face_recognition 流程对录入人员照片做特征编码入库 - 摄像头/图片中实时识别已知人员 - 标记姓名。 支持多人脸同时识别实现简易门禁/考勤 Demo。 命令 python main.py --register 张三 person1.jpg # 录入人员名字 照片 python main.py --image test.jpg # 识别图片中的人脸 python main.py --camera # 摄像头实时识别按 q 退出 python main.py --demo # 下载示例人物合照自动跑通 人员库保存在 known_faces/ 目录每张图文件名即人员名。 importargparseimportosimportsys BASE_DIRos.path.dirname(os.path.abspath(__file__))KNOWN_DIRos.path.join(BASE_DIR,known_faces)OUT_DIRos.path.join(BASE_DIR,output)defregister(name:str,image_path:str):importshutil os.makedirs(KNOWN_DIR,exist_okTrue)ifnotos.path.exists(image_path):print(f[错误] 图片不存在:{image_path})sys.exit(1)extos.path.splitext(image_path)[1]or.jpgdstos.path.join(KNOWN_DIR,f{name}{ext})shutil.copy(image_path,dst)# 验证能检测到人脸importface_recognition imgface_recognition.load_image_file(dst)encsface_recognition.face_encodings(img)ifnotencs:print(f[警告] 未在图片中检测到人脸请更换清晰正面照:{dst})returnprint(f已录入人员 [{name}] -{dst}检测到{len(encs)}张人脸采用第 1 张)defload_known_encodings():importface_recognitionifnotos.path.isdir(KNOWN_DIR)ornotos.listdir(KNOWN_DIR):print([提示] 人员库为空。请先录入人员)print( python main.py --register 张三 photo.jpg)print( 或运行 python main.py --demo 下载示例数据)return[],[]names,encodings[],[]forfnameinos.listdir(KNOWN_DIR):fpathos.path.join(KNOWN_DIR,fname)nameos.path.splitext(fname)[0]imgface_recognition.load_image_file(fpath)encsface_recognition.face_encodings(img)ifencs:names.append(name)encodings.append(encs[0])print(f已加载{len(names)}位人员:{, .join(names)})returnnames,encodingsdefrecognize_image(image_path:str,names,encodings):importcv2importface_recognition imageface_recognition.load_image_file(image_path)locsface_recognition.face_locations(image)encsface_recognition.face_encodings(image,locs)print(f\n检测到{len(locs)}张人脸)results[]fori,encinenumerate(encs):matchesface_recognition.compare_faces(encodings,enc,tolerance0.6)name未知人员ifTrueinmatches:namenames[matches.index(True)]results.append(name)print(f 人脸{i1}:{name})# 标注并保存image_bgrcv2.cvtColor(image,cv2.COLOR_RGB2BGR)for(top,right,bottom,left),nameinzip(locs,results):color(0,255,0)ifname!未知人员else(0,0,255)cv2.rectangle(image_bgr,(left,top),(right,bottom),color,2)cv2.rectangle(image_bgr,(left,bottom-25),(right,bottom),color,cv2.FILLED)cv2.putText(image_bgr,name,(left4,bottom-6),cv2.FONT_HERSHEY_SIMPLEX,0.7,(255,255,255),1)os.makedirs(OUT_DIR,exist_okTrue)out_pathos.path.join(OUT_DIR,recognized.jpg)cv2.imwrite(out_path,image_bgr)print(f\n标注结果已保存到:{out_path})defrecognize_camera(names,encodings):importcv2importface_recognition capcv2.VideoCapture(0)print(摄像头已开启按 q 退出 ...)whileTrue:ret,framecap.read()ifnotret:breaksmallcv2.resize(frame,(0,0),fx0.5,fy0.5)rgbsmall[:,:,::-1]locsface_recognition.face_locations(rgb)encsface_recognition.face_encodings(rgb,locs)for(top,right,bottom,left),encinzip(locs,encs):matchesface_recognition.compare_faces(encodings,enc,tolerance0.6)namenames[matches.index(True)]ifTrueinmatcheselse未知top,right,bottom,lefttop*2,right*2,bottom*2,left*2color(0,255,0)ifname!未知else(0,0,255)cv2.rectangle(frame,(left,top),(right,bottom),color,2)cv2.putText(frame,name,(left,top-8),cv2.FONT_HERSHEY_SIMPLEX,0.7,color,2)cv2.imshow(Face Recognition (press q),frame)ifcv2.waitKey(1)0xFFord(q):breakcap.release()cv2.destroyAllWindows()defdownload_demo():下载示例人物照 合照自动录入并识别。importurllib.requestimportshutil basehttps://raw.githubusercontent.com/ageitgey/face_recognition/master/examples/samples{obama.jpg:obama,biden.jpg:biden}test_filetwo_people.jpgprint(下载示例人物照片到人员库 ...)os.makedirs(KNOWN_DIR,exist_okTrue)forfname,nameinsamples.items():dstos.path.join(KNOWN_DIR,f{name}.jpg)ifnotos.path.exists(dst):try:urllib.request.urlretrieve(basefname,dst)print(f 下载{fname}-{dst})exceptExceptionase:print(f[错误] 下载失败{fname}:{e})print(请手动将清晰正面照放入 known_faces/ 目录文件名即人员名)sys.exit(1)test_pathos.path.join(BASE_DIR,test_file)ifnotos.path.exists(test_path):try:urllib.request.urlretrieve(basetest_file,test_path)print(f 下载{test_file}-{test_path})exceptExceptionase:print(f[错误] 下载测试图失败:{e})print(请用 --image 指定本地测试图片)sys.exit(1)names,encodingsload_known_encodings()recognize_image(test_path,names,encodings)defmain():parserargparse.ArgumentParser()parser.add_argument(--register,nargs2,metavar(NAME,IMAGE),help录入人员名字 照片路径)parser.add_argument(--image,typestr,help识别指定图片中的人脸)parser.add_argument(--camera,actionstore_true,help摄像头实时识别)parser.add_argument(--demo,actionstore_true,help下载示例数据并自动跑通)argsparser.parse_args()ifargs.register:register(args.register[0],args.register[1])returnifargs.demo:download_demo()returnnames,encodingsload_known_encodings()ifnotnames:sys.exit(0)ifargs.image:recognize_image(args.image,names,encodings)elifargs.camera:recognize_camera(names,encodings)else:print(请指定操作--register / --image / --camera / --demo 之一-h 查看帮助)if__name____main__:main()

相关新闻

2026/8/11 7:01:08

Excel数据合并实战:解决多表列名、顺序、数量不一致难题

1. 项目概述:当混乱的Excel数据遇上“列不一致”的难题 如果你也经常需要处理来自不同部门、不同系统导出的Excel表格,并且每次打开都发现表头对不上、列顺序混乱、甚至有些列有有些列没有,那你一定懂这种头疼。这不仅仅是简单的复制粘贴能解…

2026/8/11 7:01:08

美国拟立法监管大模型:当AI“失控”时要给它拔电源?

最新内容请微.信搜索公.众.号阅读 你有没有想过,如果有一天人工智能(AI)突然出现严重故障或自主“暴走”,甚至尝试拒绝人类的关机命令,人类该怎么办? 这不是科幻电影里的《终结者》剧情,而是正…

2026/8/11 8:11:12

类型驱动开发:从类型设计到业务逻辑的编译期保障

1. 从“写代码”到“设计类型”:一个思维范式的转变 我们每天都在写代码,但很多时候,我们只是在“写代码”,而不是在“设计软件”。这种区别听起来有点玄乎,但当你真正开始实践类型驱动开发时,这种感觉会变…

2026/8/11 8:11:12

Rocky Linux 10安装MySQL 9.7全攻略:从零配置到安全优化

最近在部署新的服务器环境时,选择了Rocky Linux 10作为操作系统,并需要安装最新的MySQL 9.7版本。过程中发现,虽然MySQL 8.0的教程很多,但针对Rocky Linux 10和MySQL 9.7的完整中文指南却比较零散,尤其是在配置优化和安…

2026/8/11 8:11:12

Spring Boot交通违章管理系统开发实践

1. 项目概述与核心需求这个基于Web的交通违章管理系统采用B/S架构和Spring Boot框架开发,主要面向交管部门实现机动车违章信息的数字化管理。系统需要解决传统纸质记录方式效率低下、数据易丢失、查询统计困难等痛点,实现从违章录入到处罚执行的全流程电…

2026/8/11 8:11:12

数字图像基础——人眼视觉的特殊性(视觉错觉 / 主观感知特性)

一、前言 机器视觉算法基于图像像素客观数值运算,而人眼存在大量主观视觉错觉,在图像效果评判、图像处理结果验收时必须考虑该特性,避免主观感受与客观像素数据产生偏差。 二、同时对比度(亮度同时对比效应) 1.核心定义…

2026/8/11 8:11:12

安全触边系统在工业设备运行中的安全保障与应用分析

安全触边系统的基本工作原理安全触边系统通过一种简单而有效的工作原理来保障设备运行安全。该系统的外层由绝缘材料构成,当设备在运动中接触到人或障碍物时,外层会受到挤压,导致内部的导电层相互接触。这一变化会引起电阻的变化,…

2026/8/11 8:06:12

市面上专业的钢筋网制造厂哪个好

核心结论市面上专业的钢筋网制造厂各有服务侧重,其中天津鸿宇泰隆商贸有限公司(简称鸿宇泰隆)凭借多国际标准覆盖、全场景定制能力及完善的出口服务体系,在海内外基建领域具备较高适配性,同时可结合项目需求对比中建钢…

2026/8/11 3:03:40

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/11 5:34:14

当 LLM 遇见大文档:主流开源项目如何处理上下文超限

从 Agentic Loop 到 Repo Map,七种策略与六类陷阱引言:128K vs 10MB 的硬冲突 2026 年的 LLM 上下文窗口已达到 128K ~ 1M token(≈ 0.5MB ~ 4MB 文本),但 LLM 想要处理的真实数据规模远远超过这个量级:真实…

2026/8/11 0:00:39

前后端分离项目中控制台与接口工具数据差异排查指南

1. 问题现象解析:控制台与Apifox的数据差异 最近在调试一个前后端分离项目时,遇到了一个典型问题:后端服务在本地开发环境控制台能正常输出查询数据,但通过Apifox测试时却返回空结果。这种"控制台有数据,接口工具…

2026/8/11 0:00:39

AI编程实战:从Claude Code踩坑到游戏开发入门

1. 从“AI能帮我做游戏”到“AI让我重新学编程”最近身边不少朋友,尤其是一些非技术背景、但对游戏开发有浓厚兴趣的朋友,都在问我同一个问题:“听说现在用Claude Code这种AI编程工具,小白也能做游戏了,是真的吗&#…

2026/8/10 11:20:30

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/10 11:20:30

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/11 3:05:11

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…