入门实践工程十一:人脸识别门禁系统(基于 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()

相关新闻

政府网站也会“帮黑客传毒”?揭秘隐藏在权威域名背后的网络陷阱

政府网站也会“帮黑客传毒”?揭秘隐藏在权威域名背后的网络陷阱

最新内容请微.信搜索公.众.号阅读在日常上网时,大部分人都有一个固有的安全观念:只要网址以 “.gov”(政府机构)或 “.jus”(司法机构)结尾,或者收到的邮件来自官方政务邮箱,那就是绝…

2026/8/11 7:01:22 阅读更多 →
Excel数据合并实战:解决多表列名、顺序、数量不一致难题

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

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

2026/8/11 7:01:22 阅读更多 →
美国拟立法监管大模型:当AI“失控”时要给它拔电源?

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

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

2026/8/11 7:01:22 阅读更多 →

最新新闻

比特派钱包增长失效,Web3分发全面转向用户质量

比特派钱包增长失效,Web3分发全面转向用户质量

过去数年,Web3 钱包行业普遍以 APP 下载量、新增装机数作为增长核心指标,渠道投放、社群拉新、空投补贴成为主流获客手段,比特派等老牌钱包也曾依托流量打法快速扩大用户盘子。但伴随行业红利消退、流量成本飙升、用户分层加剧,单纯依靠下载量扩张的粗放增长模式彻底失效,整个 …

2026/8/11 9:20:18 阅读更多 →
Unity Wheel Collider 入门:从零构建可驾驶3D车辆物理系统

Unity Wheel Collider 入门:从零构建可驾驶3D车辆物理系统

1. 项目概述:从零开始,用Unity的Wheel Collider打造你的第一辆3D小车 如果你刚接触Unity,想找一个既有成就感又能快速理解物理交互和脚本控制的入门项目,那么实现一辆3D可驾驶的车辆绝对是个绝佳的选择。这不仅仅是放几个轮子那么…

2026/8/11 9:20:18 阅读更多 →
【Linux系统编程】shell与权限(2)——从 rwx 到 chmod/chown

【Linux系统编程】shell与权限(2)——从 rwx 到 chmod/chown

🎈主页传送门:良木生香 🔥个人专栏:《C语言》《数据结构-初阶》《鼠鼠的C学习之路》《Linux系统编程》 🌟人为善,福随未至,祸已远行;人为恶,祸虽未至,福已远离 前言:在 Linux 中,权限是系统安全的基石。普通用户和 r…

2026/8/11 9:20:18 阅读更多 →
C++强大的背后

C++强大的背后

C广泛应用在不同领域,使用者以数百万计。根据近十年的调查,C的流行程度约稳定排行第3位(于C/Java之后)。 C经历长期的实践和演化,才成为今日的样貌。1998年,C标准委员会排除万难,使C成为ISO标准(俗称C98),当…

2026/8/11 9:20:18 阅读更多 →
AI命理软件深度测评:技术如何赋能传统八字排盘与解读

AI命理软件深度测评:技术如何赋能传统八字排盘与解读

1. 项目概述:当AI遇上传统命理,我们到底在测评什么? 最近几年,AI的风吹遍了各行各业,从写代码到做设计,现在这股风终于刮到了“玄学”领域。作为一个对技术趋势和传统文化都抱有兴趣的从业者,我…

2026/8/11 9:20:18 阅读更多 →
《怪物猎人》竞速攻略:单瓶攻击极限爆发策略与资源管理

《怪物猎人》竞速攻略:单瓶攻击极限爆发策略与资源管理

1. 先搞清楚“打电鳐榜”是什么,以及为什么“一个攻击瓶”是关键 如果你在社区或论坛里看到“打电鳐榜,虽然排名有点可惜,但分是真的高,只用了一个攻击瓶”这样的讨论,第一反应可能是好奇:这到底是在玩什么…

2026/8/11 9:19:17 阅读更多 →

日新闻

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南 【免费下载链接】video2x A machine learning-based video super resolution and frame interpolation framework. Est. Hack the Valley II, 2018. 项目地址: https://gitcode.com/GitHub_Trending/vi/v…

2026/8/11 0:00:02 阅读更多 →
前后端分离项目中控制台与接口工具数据差异排查指南

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

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

2026/8/11 0:00:03 阅读更多 →
AI编程实战:从Claude Code踩坑到游戏开发入门

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

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

2026/8/11 0:00:03 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/11 1:08:05 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

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

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

2026/8/11 1:08:05 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/11 1:08:05 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/10 17:07:33 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/11 1:08:06 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/10 17:07:33 阅读更多 →