当前位置: 首页 > article >正文

Python face_recognition 库实战:从环境搭建到人脸特征点检测

1. 环境准备搭建人脸识别的开发环境第一次接触人脸识别开发时最让人头疼的就是环境配置。记得我刚开始用face_recognition库时光是安装依赖就折腾了大半天。后来才发现其实只要掌握几个关键步骤整个过程可以非常顺畅。首先需要安装Python环境推荐使用Python 3.7及以上版本。我个人习惯用Anaconda来管理Python环境这样可以避免不同项目之间的依赖冲突。创建一个新的conda环境非常简单conda create -n face_recog python3.8 conda activate face_recog接下来就是安装face_recognition库的核心依赖。这个库底层使用了dlib的人脸识别算法而dlib又依赖CMake和C编译工具。在Windows系统上你需要先安装Visual Studio的C构建工具。这里有个小技巧不需要安装完整的Visual Studio只需要安装Build Tools for Visual Studio就足够了。安装完构建工具后建议按这个顺序安装Python包pip install cmake pip install dlib pip install face_recognition pip install opencv-python我实测过多次这个顺序能最大程度避免安装报错。特别是dlib的安装如果先装face_recognition再装dlib经常会遇到各种奇怪的错误。2. 基础使用检测图片中的人脸环境准备好后我们就可以开始实际的人脸检测了。face_recognition库最强大的地方在于它的API设计非常简洁几行代码就能实现强大的功能。先来看一个最简单的例子 - 检测单张图片中的人脸位置import face_recognition import cv2 # 加载图片 image face_recognition.load_image_file(test.jpg) # 查找所有人脸位置 face_locations face_recognition.face_locations(image) print(f找到 {len(face_locations)} 张人脸) # 用OpenCV绘制矩形框 image cv2.cvtColor(image, cv2.COLOR_RGB2BGR) for (top, right, bottom, left) in face_locations: cv2.rectangle(image, (left, top), (right, bottom), (0, 255, 0), 2) cv2.imshow(Detected Faces, image) cv2.waitKey(0)这段代码做了几件事用face_recognition加载图片调用face_locations方法获取所有人脸的位置坐标使用OpenCV在检测到的人脸周围绘制绿色矩形框face_locations返回的是一个包含多个元组的列表每个元组代表一张人脸的位置(top, right, bottom, left)。这里有个实用技巧face_recognition默认使用HOG模型进行人脸检测速度较快但精度稍低。如果你需要更高精度的检测可以传入modelcnn参数face_locations face_recognition.face_locations(image, modelcnn)不过要注意CNN模型需要更多的计算资源在CPU上运行会比较慢。3. 进阶功能提取面部特征点人脸检测只是基础face_recognition库更强大的功能在于它能够精确定位面部的关键特征点。这些特征点包括眼睛、眉毛、鼻子、嘴唇等部位对于人脸分析、表情识别等应用非常有用。提取面部特征点的代码同样很简单face_landmarks face_recognition.face_landmarks(image) for landmarks in face_landmarks: # 绘制下巴轮廓 for point in landmarks[chin]: cv2.circle(image, point, 1, (0, 255, 0), -1) # 绘制左眉毛 for point in landmarks[left_eyebrow]: cv2.circle(image, point, 1, (255, 0, 0), -1) # 绘制右眉毛 for point in landmarks[right_eyebrow]: cv2.circle(image, point, 1, (255, 0, 0), -1) # 绘制鼻子轮廓 for point in landmarks[nose_bridge]: cv2.circle(image, point, 1, (0, 0, 255), -1) # 绘制嘴唇 for point in landmarks[top_lip]: cv2.circle(image, point, 1, (0, 0, 255), -1) for point in landmarks[bottom_lip]: cv2.circle(image, point, 1, (0, 0, 255), -1) # 绘制眼睛 for point in landmarks[left_eye]: cv2.circle(image, point, 1, (255, 255, 0), -1) for point in landmarks[right_eye]: cv2.circle(image, point, 1, (255, 255, 0), -1)face_landmarks方法返回一个字典列表每个字典对应一张人脸的特征点。字典的键是特征部位名称值是该部位各个点的坐标列表。比如chin键对应的是下巴轮廓的17个点nose_bridge对应的是鼻梁的4个点。在实际项目中我经常用这些特征点来计算一些有用的信息。比如通过眼睛特征点可以计算眼睛的睁开程度判断一个人是否疲劳通过嘴唇特征点可以分析是否在微笑等。4. 性能优化与实用技巧经过几个项目的实战我总结了一些face_recognition库的使用技巧能显著提升开发效率和运行性能。首先是处理速度的优化。默认情况下face_recognition会处理整张图片这在处理高分辨率图片时会很慢。一个实用的技巧是先对图片进行缩放def detect_faces_faster(image_path): image face_recognition.load_image_file(image_path) small_image cv2.resize(image, (0, 0), fx0.25, fy0.25) face_locations face_recognition.face_locations(small_image) # 将坐标转换回原图尺寸 face_locations [(top*4, right*4, bottom*4, left*4) for (top, right, bottom, left) in face_locations] return face_locations这个方法将图片缩小到原来的1/4处理完后再将坐标放大回去。在我的测试中这样处理速度能提升3-5倍而精度损失很小。另一个常见需求是处理视频流。结合OpenCV我们可以实现实时人脸检测video_capture cv2.VideoCapture(0) while True: ret, frame video_capture.read() rgb_frame frame[:, :, ::-1] # BGR转RGB face_locations face_recognition.face_locations(rgb_frame) for (top, right, bottom, left) in face_locations: cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2) cv2.imshow(Video, frame) if cv2.waitKey(1) 0xFF ord(q): break video_capture.release() cv2.destroyAllWindows()这里需要注意颜色空间的转换。OpenCV默认使用BGR格式而face_recognition需要RGB格式所以需要进行转换。最后分享一个实际项目中遇到的坑在某些Linux系统上dlib可能会因为AVX指令集的问题导致导入失败。解决方法要么是重新编译dlib要么安装预编译的非AVX版本pip install dlib19.22.0 --no-binary :all:

相关文章:

Python face_recognition 库实战:从环境搭建到人脸特征点检测

1. 环境准备:搭建人脸识别的开发环境 第一次接触人脸识别开发时,最让人头疼的就是环境配置。记得我刚开始用face_recognition库时,光是安装依赖就折腾了大半天。后来才发现,其实只要掌握几个关键步骤,整个过程可以非常…...

审核员能力模型——冰山模型说人话版

📋 审核概论系列 第9篇/共10篇知识和技能不等于能力。认证审核员到底需要什么能力?麦克利兰冰山模型告诉你📊 真实场景:CCAA注册审核员考试通过率大约只有30%-40%。很多人专业知识学了不少,ISO 9001标准背得滚瓜烂熟&…...

Ajax技术和Axois工具库

前端如何才能动态展示数据?如何动态获取后端的数据呢? 目录 文章目录 一、什么是Ajax? 二、什么是Axios? 核心用途 三、如何在Vue项目中使用Axios? 1、安装Axios 2、引入Axios 3、基础使用 4、拦截器 5、async/await是什么? 总…...

Zotero Duplicates Merger终极指南:3分钟彻底告别文献库重复烦恼

Zotero Duplicates Merger终极指南:3分钟彻底告别文献库重复烦恼 【免费下载链接】ZoteroDuplicatesMerger A zotero plugin to automatically merge duplicate items 项目地址: https://gitcode.com/gh_mirrors/zo/ZoteroDuplicatesMerger 还在为Zotero文献…...

清华PPT模板终极指南:告别PPT设计烦恼,轻松制作专业演示

清华PPT模板终极指南:告别PPT设计烦恼,轻松制作专业演示 【免费下载链接】THU-PPT-Theme 清华主题PPT模板 项目地址: https://gitcode.com/gh_mirrors/th/THU-PPT-Theme 还在为学术答辩、项目汇报的PPT设计而头疼吗?每次打开PowerPoin…...

League Akari:3步打造你的英雄联盟智能游戏助手,告别繁琐操作

League Akari:3步打造你的英雄联盟智能游戏助手,告别繁琐操作 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League A…...

基于SSM框架的童装购买平台微信小程序(30286)

有需要的同学,源代码和配套文档领取,加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码(前后端源代码SQL脚本)配套文档(LWPPT开题报告/任务书)远程调试控屏包运行一键启动项目&…...

从图文对到通用视觉:CLIP如何用对比学习重塑多模态预训练范式

1. 从图文匹配到通用视觉:CLIP的颠覆性思路 第一次看到CLIP模型时,我正为一个老问题头疼:训练好的图像分类器遇到新类别就直接"罢工"。比如用猫狗数据集训练的模型,突然给它看一只考拉,结果只会输出"猫…...

青岛银行员工才艺大赛|iPad评委打分系统案例

在青岛银行首届员工才艺大赛现场,熹乐互动的iPad评委打分系统为这场精彩赛事注入了高效、透明的科技体验。评委们只需通过iPad端操作,即可快速为节目打分,系统实时同步数据至大屏,自动完成分数统计、加权计算与排名更新。无需人工…...

Zutilo:为Zotero研究者量身打造的高效文献管理增强插件

Zutilo:为Zotero研究者量身打造的高效文献管理增强插件 【免费下载链接】Zutilo Zotero plugin providing some additional editing features 项目地址: https://gitcode.com/gh_mirrors/zu/Zutilo 作为一名Zotero用户,你是否曾为批量管理标签而烦…...

从仿真到调试:FSDB与VPD波形文件的生成与高效查看指南

1. 数字IC验证中的波形文件:为什么它们如此重要? 在数字IC验证的世界里,波形文件就像是工程师的"显微镜"。想象一下,你正在调试一个复杂的RTL设计,代码运行了,但结果不对。这时候,如果…...

2026十大建议考的经济学专业证书有哪些

2026年十大经济学专业证书推荐经济学专业证书能够提升职业竞争力,尤其在数据分析、金融和经济预测领域。以下是2026年值得考取的十大经济学专业证书,包括CDA数据分析师证书等热门选择。1. CDA数据分析师证书CDA数据分析师证书是数据分析领域的权威认证&a…...

带fp8激活量化的RMSNorm算子手撕

rms_norm_fp8_noweight_fp16:计算流程与优化 完整代码 void rms_norm_fp8_noweight_fp16(const __half *x, __nv_fp8_e4m3 *out,int seq_len, int dim, const float *d_scale,cudaStream_t stream) {rms_norm_fp8_noweight_kernel<<<seq_len, 256, 0, stream>&g…...

我的第一个CNN项目翻车实录:从过拟合到数据清洗,TensorFlow 2.1猫狗分类避坑指南

我的第一个CNN项目翻车实录&#xff1a;从过拟合到数据清洗&#xff0c;TensorFlow 2.1猫狗分类避坑指南 第一次接触深度学习时&#xff0c;我天真地以为只要按照教程搭建一个卷积神经网络(CNN)&#xff0c;就能轻松实现猫狗图片分类。然而现实给了我一记响亮的耳光——模型要么…...

ExplorerPatcher架构解析:深度剖析Windows界面定制引擎

ExplorerPatcher架构解析&#xff1a;深度剖析Windows界面定制引擎 【免费下载链接】ExplorerPatcher This project aims to enhance the working environment on Windows 项目地址: https://gitcode.com/GitHub_Trending/ex/ExplorerPatcher ExplorerPatcher作为Window…...

【机器学习】集成学习(Boosting)——XGBoost算法(原理+推导+实战)

1. XGBoost为什么能成为竞赛冠军的标配&#xff1f; 第一次参加Kaggle比赛时&#xff0c;我完全被排行榜惊呆了——前50名的解决方案清一色都在用XGBoost。当时很不理解&#xff1a;明明有更"高级"的神经网络&#xff0c;为什么大家偏爱这个看似传统的算法&#xff1…...

八大网盘直链获取开源工具全面指南:如何高效管理你的云端文件下载

八大网盘直链获取开源工具全面指南&#xff1a;如何高效管理你的云端文件下载 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动…...

从零上手泰凌微TLSR8269:SIG Mesh SDK文件架构与编译环境搭建保姆级指南

泰凌微TLSR8269 SIG Mesh开发实战&#xff1a;从SDK解析到环境搭建全攻略 第一次打开泰凌微TLSR8269的SIG Mesh SDK时&#xff0c;面对密密麻麻的文件夹和文件&#xff0c;不少开发者都会感到无从下手。proj、proj_lib、vendor这些目录到底存放着什么&#xff1f;如何快速搭建起…...

终极风扇控制指南:如何用开源工具FanControl精准调节你的电脑散热系统

终极风扇控制指南&#xff1a;如何用开源工具FanControl精准调节你的电脑散热系统 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/Git…...

手把手教你用CH342 USB转串口模块在Ubuntu 22.04上调试(附dmesg日志分析)

手把手教你用CH342 USB转串口模块在Ubuntu 22.04上调试&#xff08;附dmesg日志分析&#xff09; 嵌入式开发中&#xff0c;串口调试是最基础却最容易出问题的环节。当你在Ubuntu 22.04上插入CH342模块准备调试ESP32开发板时&#xff0c;是否遇到过设备无法识别、权限拒绝或者波…...

2026年简易操作安装Hermes Agent/OpenClaw Token Plan全流程解析大全

2026年简易操作安装Hermes Agent/OpenClaw Token Plan全流程解析大全。OpenClaw作为阿里云生态下新一代的开源AI自动化代理平台&#xff0c;曾用名Moltbot/Clawdbot&#xff0c;凭借“自然语言交互自动化任务执行大模型智能决策”的核心能力&#xff0c;正在重构个人与企业的工…...

Fooocus:5分钟快速上手的AI图像生成完整指南,免费离线使用

Fooocus&#xff1a;5分钟快速上手的AI图像生成完整指南&#xff0c;免费离线使用 【免费下载链接】Fooocus Focus on prompting and generating 项目地址: https://gitcode.com/GitHub_Trending/fo/Fooocus 在AI图像生成技术快速发展的今天&#xff0c;Fooocus作为一款…...

2026年小白适用Hermes Agent/OpenClaw Token Plan集成全攻略大全

2026年小白适用Hermes Agent/OpenClaw Token Plan集成全攻略大全。OpenClaw作为阿里云生态下新一代的开源AI自动化代理平台&#xff0c;曾用名Moltbot/Clawdbot&#xff0c;凭借“自然语言交互自动化任务执行大模型智能决策”的核心能力&#xff0c;正在重构个人与企业的工作效…...

AI大模型选型生死线(2026企业采购决策白皮书):API延迟、幻觉率、合规审计通过率三维淘汰制解析

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI大模型选型生死线&#xff1a;2026企业采购决策范式重构 当算力成本下降47%、推理延迟压缩至83ms、私有化微调周期缩短至4.2小时&#xff0c;企业不再比拼“谁用了大模型”&#xff0c;而是在验证“谁…...

解码Voron 2.4:开源高速CoreXY 3D打印机的架构哲学与工程实践

解码Voron 2.4&#xff1a;开源高速CoreXY 3D打印机的架构哲学与工程实践 【免费下载链接】Voron-2 Voron 2 CoreXY 3D Printer design 项目地址: https://gitcode.com/gh_mirrors/vo/Voron-2 Voron 2.4作为开源3D打印机领域的标杆产品&#xff0c;代表了CoreXY架构在高…...

【NotebookLM音频黑科技深度解析】:20年AI产品经理亲测的5大颠覆性功能与3个未公开技巧

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;NotebookLM Audio Overview NotebookLM Audio 是 Google 推出的实验性语音增强功能&#xff0c;深度集成于 NotebookLM 平台&#xff0c;旨在将用户上传的 PDF、网页文本等资料转化为可交互的语音知识体…...

从模型训练到推理服务全链路编排,SITS 2026定义的K8s for ML新标准:为什么92%的MLOps团队将在Q3前强制升级?

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI原生Kubernetes编排&#xff1a;SITS 2026 K8s for ML工作负载 SITS 2026 引入了专为机器学习工作负载深度优化的 AI 原生 Kubernetes 控制平面&#xff0c;其核心在于将训练任务生命周期、弹性资源调…...

【高通SDM660平台】Camera 驱动 Bringup 实战:从 DTS 配置到 Vendor 模块集成

1. 高通SDM660平台Camera驱动Bringup概述 当你拿到一块基于高通SDM660平台的新硬件时&#xff0c;Camera驱动的Bringup工作可能会让你感到有些头疼。作为一个在这个领域摸爬滚打多年的工程师&#xff0c;我想分享一些实战经验&#xff0c;帮助你快速点亮Camera功能并完成基础调…...

CTFd平台集成MCP协议:AI助手赋能CTF赛事智能运维实践

1. 项目概述&#xff1a;CTFd与MCP的融合实践最近在安全圈和CTF&#xff08;Capture The Flag&#xff0c;夺旗赛&#xff09;赛事运维圈子里&#xff0c;一个名为AaryaBhusal/ctfd-mcp的项目引起了我的注意。乍一看&#xff0c;这像是一个针对CTFd平台的插件或扩展&#xff0c…...

国光黑苹果教程:OpenCore完整安装指南,快速打造完美macOS系统

国光黑苹果教程&#xff1a;OpenCore完整安装指南&#xff0c;快速打造完美macOS系统 【免费下载链接】Hackintosh 国光的黑苹果安装教程&#xff1a;手把手教你配置 OpenCore 项目地址: https://gitcode.com/gh_mirrors/hac/Hackintosh 国光黑苹果教程是一个专为新手设…...