OpenCV学习:MediaPipe 人脸网格检测
OpenCV学习MediaPipe 人脸网格检测前言前面我们学习了 MediaPipe 的手部关键点检测、手势数字识别和人体姿态检测。本篇我们将进入 MediaPipe 的另一个强大模块——Face Mesh人脸网格。它能识别人脸上的478 个关键点比 dlib 的 68 个关键点更精细能覆盖五官轮廓、眼部细节、嘴唇边缘、甚至眼球等部位。这个技术可以用于虚拟试妆、面部表情分析、人脸驱动虚拟形象等场景。目录一、Face Mesh 简介二、核心参数详解三、478 个人脸关键点四、完整代码五、结果说明六、总结一、Face Mesh 简介1.1 什么是 Face MeshFace Mesh人脸网格是 MediaPipe 提供的人脸关键点检测模块能从一张人脸图片中提取478 个 3D 关键点并以网格Mesh的方式绘制出来。1.2 与 dlib 68 点的对比对比维度dlib 68 点MediaPipe Face Mesh关键点数量68 个478 个是否有眼球否有虹膜是否有 3D 坐标否有x/y/z处理速度快较快精度一般高安装依赖需要编译pip 直接安装MediaPipe Face Mesh 在关键点数量、精度、易用性上都优于 dlib 68 点。1.3 应用场景场景说明虚拟试妆精确定位嘴唇、眼影、腮红位置表情分析通过面部关键点分析情绪人脸驱动虚拟形象用真人面部动作驱动虚拟角色AR 滤镜在脸上叠加面具、贴纸等面部按摩定位穴位指导按摩位置面部识别辅助提取面部特征进行身份识别二、核心参数详解2.1 FaceMesh() 核心参数face_meshmp_face_mesh.FaceMesh(static_image_modeFalse,max_num_faces2,refine_landmarksTrue,min_detection_confidence0.5,min_tracking_confidence0.5)参数说明static_image_mode静态图像还是连续帧视频max_num_faces最多检测几个人脸refine_landmarks是否精细检测嘴唇和眼球min_detection_confidence最小检测置信度min_tracking_confidence最小跟踪置信度2.2 static_image_mode取值说明True适用于静态图片每帧独立检测False适用于视频流利用前一帧信息追踪推荐2.3 max_num_faces取值说明int最多检测的人脸数量默认为 1提示数量越大计算量越大。一般设为 1~5 即可。2.4 refine_landmarks取值说明True精细检测嘴唇和眼球关键点从 468 增至478False只检测 468 个基础关键点开启后的效果嘴唇边缘更精细增加虹膜眼球关键点更精确的眼部追踪注意refine_landmarksTrue时关键点数量是 478否则是 468。2.5 置信度参数参数说明取值范围min_detection_confidence最小检测置信度0.0 ~ 1.0min_tracking_confidence最小跟踪置信度0.0 ~ 1.0影响值越大检测越精准但响应时间越长值越小越容易检出但误检也更多。三、478 个人脸关键点3.1 关键点分布MediaPipe Face Mesh 的 478 个关键点覆盖了面部的各个部位部位关键点范围说明脸部轮廓0~16脸部外轮廓左眉17~21左眼上方右眉22~26右眼上方鼻子27~35鼻梁、鼻翼左眼36~41左眼周围右眼42~47右眼周围嘴巴外轮廓48~59嘴唇外边缘嘴巴内轮廓60~67嘴唇内边缘虹膜468~477左右眼球需开启 refine_landmarks3.2 关键点数量说明refine_landmarks关键点总数False468 个True478 个增加虹膜关键点3.3 关键点连接关系MediaPipe 提供了多种连接方式用于绘制不同风格的人脸网格连接说明FACEMESH_TESSELATION完整网格最密集FACEMESH_CONTOURS五官轮廓FACEMESH_IRISES虹膜轮廓FACEMESH_LEFT_EYE左眼轮廓FACEMESH_RIGHT_EYE右眼轮廓四、完整代码importcv2importmediapipeasmp# 初始化 MediaPipe 模块 mp_face_meshmp.solutions.face_mesh# 人脸网格模块mp_drawingmp.solutions.drawing_utils# 绘图工具mp_drawing_stylesmp.solutions.drawing_styles# 绘图风格# 设置 Face Mesh 参数face_meshmp_face_mesh.FaceMesh(static_image_modeFalse,# False 适用于视频流max_num_faces2,# 最多检测 2 张人脸refine_landmarksTrue,# 精细检测嘴唇和眼球478 个关键点min_detection_confidence0.5,# 最小检测置信度min_tracking_confidence0.5)# 最小跟踪置信度# 打开摄像头 capcv2.VideoCapture(0,cv2.CAP_DSHOW)whilecap.isOpened():success,framecap.read()ifnotsuccess:print(无法读取摄像头画面)breakh,wframe.shape[:2]# 获取图像高度和宽度# 人脸网格检测 # MediaPipe 需要 RGB 输入OpenCV 默认是 BGRframe_rgbcv2.cvtColor(frame,cv2.COLOR_BGR2RGB)# 执行检测resultsface_mesh.process(frame_rgb)# 绘制关键点 ifresults.multi_face_landmarks:forface_landmarksinresults.multi_face_landmarks:# print(len(face_landmarks.landmark)) # 478# 遍历所有关键点绘制编号foriinrange(len(face_landmarks.landmark)):xface_landmarks.landmark[i].x# 归一化 x 坐标0~1yface_landmarks.landmark[i].y# 归一化 y 坐标0~1# z face_landmarks.landmark[i].z # 深度信息# 将归一化坐标乘以图像宽高转为像素坐标cv2.putText(frame,str(i),(int(x*w),int(y*h)),cv2.FONT_HERSHEY_SIMPLEX,0.3,(0,255,0),2)# 绘制人脸网格连接线TESSELATION完整三角网格mp_drawing.draw_landmarks(imageframe,landmark_listface_landmarks,connectionsmp_face_mesh.FACEMESH_TESSELATION,landmark_drawing_specNone,connection_drawing_specmp_drawing_styles.get_default_face_mesh_tesselation_style())# 显示结果 cv2.imshow(Face Mesh,frame)# 按 ESC 键退出ifcv2.waitKey(1)27:breakcap.release()cv2.destroyAllWindows()五、结果说明5.1 关键步骤步骤说明1. 初始化模型用mp_face_mesh.FaceMesh()创建人脸网格检测器2. 打开摄像头用cv2.VideoCapture()读取视频流3. 转换格式BGR → RGBMediaPipe 要求4. 执行检测face_mesh.process()返回关键点结果5. 绘制关键点遍历 478 个关键点绘制编号6. 绘制网格用draw_landmarks()绘制三角网格5.2 三种绘制风格mp_drawing_styles提供了三种绘制风格风格说明视觉效果TESSELATION完整三角网格最密集视觉效果最好CONTOURS五官轮廓简洁突出面部轮廓IRISES虹膜轮廓突出眼球位置5.3 关键点数量说明参数关键点数量refine_landmarksFalse468 个refine_landmarksTrue478 个增加眼球关键点5.4 应用场景场景说明虚拟试妆精确定位嘴唇、眼影、腮红位置表情分析通过面部关键点分析情绪人脸驱动虚拟形象用真人面部动作驱动虚拟角色AR 滤镜在脸上叠加面具、贴纸等眼球追踪通过虹膜关键点分析视线方向六、总结核心函数速查函数用途mp.solutions.face_mesh.FaceMesh(...)初始化人脸网格检测器face_mesh.process(frame)处理图像返回关键点结果results.multi_face_landmarks获取多张人脸的关键点mp_drawing.draw_landmarks()绘制关键点和网格连接线mp_drawing_styles.get_default_face_mesh_tesselation_style()获取网格绘制风格核心参数速查参数默认值说明static_image_modeFalseTrue 适合图片False 适合视频max_num_faces1最大检测人脸数refine_landmarksFalseTrue 时关键点从 468 增至 478min_detection_confidence0.5最小检测置信度min_tracking_confidence0.5最小跟踪置信度关键点连接类型速查连接类型说明FACEMESH_TESSELATION完整三角网格FACEMESH_CONTOURS五官轮廓FACEMESH_IRISES虹膜轮廓FACEMESH_LEFT_EYE左眼轮廓FACEMESH_RIGHT_EYE右眼轮廓注意事项要点说明图像格式MediaPipe 需要 RGB 输入OpenCV 默认 BGR需要转换坐标归一化关键点坐标是 0~1 的归一化值需乘以图像宽高关键点数量refine_landmarksTrue时是 478否则是 468处理速度478 个关键点计算量较大可考虑降低分辨率绘制风格不同连接类型对应不同绘制风格注意匹配系列直达上篇OpenCV学习MediaPipe 人体姿态检测本篇OpenCV学习MediaPipe 人脸网格检测本文下篇敬请期待

相关新闻

不越狱,用 Windows 电脑跨网络操控真实 iPhone:PLIEVA 的思路

不越狱,用 Windows 电脑跨网络操控真实 iPhone:PLIEVA 的思路

作者:VIATREE|独立网络安全研究员 本文只讲思路与结果,不含核心代码。1. 想解决什么问题 Android 有 scrcpy,电脑上就能看屏幕、点屏幕、敲键盘。iPhone 没有对等的东西:苹果不开放远程控制,常见方案要么越…

2026/10/11 13:53:56 阅读更多 →
10.9结构体 共用体

10.9结构体 共用体

C语言提供了一种语法叫结构体struct //专门用来构造复杂的数据类型//解决基本类型不好直接解决的问题 //结构体的第一步 是构造数据类型//造一个数据类型 --- 自定义数据类型 ---根据实际问题的需要 组织数据类型 ------ 等同于int//语法:struct 结构体名{成员列表 …

2026/10/10 9:20:58 阅读更多 →
铁路智能调度系统:B/S+C/S混合架构与蚁群算法落地实践

铁路智能调度系统:B/S+C/S混合架构与蚁群算法落地实践

简介:本资源是一篇发表于《新型工业化》2020年第6期的专业技术论文,聚焦铁路运输智能化系统的开发设计全过程,面向智能交通、工业软件开发及铁路信息化领域的工程师、高校研究者与系统架构师,解决传统铁路调度效率低、人工依赖强、…

2026/10/10 9:19:57 阅读更多 →

最新新闻

插件提交门户上线:Anthropic 的 App Store 时刻到了

插件提交门户上线:Anthropic 的 App Store 时刻到了

插件提交门户上线:Anthropic 的 App Store 时刻到了 【免费下载链接】knowledge-work-plugins Open source repository of plugins primarily intended for knowledge workers to use in Claude Cowork 项目地址: https://gitcode.com/GitHub_Trending/kn/knowled…

2026/10/11 13:54:12 阅读更多 →
天正画H型钢全攻略:参数化、图层与打印避坑指南

天正画H型钢全攻略:参数化、图层与打印避坑指南

简介:在现代建筑结构设计中,H型钢凭借优异的承重与抗弯性能应用广泛,使用天正CAD高效绘制其截面图已成为工程师的必备技能。这份工具包正是基于天正二次开发的H型钢截面自动绘制方案,面向结构设计师及相关专业学生,用于…

2026/10/11 13:54:12 阅读更多 →
C# WinForm底层键盘模拟:绕过输入法与焦点限制的SendInput实战

C# WinForm底层键盘模拟:绕过输入法与焦点限制的SendInput实战

简介:这是一份面向C#初学者与WinForm开发者的轻量级模拟键盘工具项目,专为触摸屏交互场景定制,解决无物理键盘设备下的快捷输入需求。项目完整实现了键盘指令模拟(含Win32 API直连与SendKeys双方案)、最小化悬浮窗、圆…

2026/10/11 13:54:12 阅读更多 →
深入理解K8s ClusterIP:虚拟IP的转发机制与网络排障实战

深入理解K8s ClusterIP:虚拟IP的转发机制与网络排障实战

前阵子有个做电商的小团队找到我,线上服务无故超时,K8s 集群里 Service 显示正常、Pod 全部 Running、就绪探针也过了,但流量就是偶发失败。当时我带着 tcpdump 和 ipvsadm 蹲了一下午。查到最后,问题不是别的,就是 Cl…

2026/10/11 13:54:12 阅读更多 →
LangAlpha开发者入门:从源码跑起来到跑通测试的完整贡献指南

LangAlpha开发者入门:从源码跑起来到跑通测试的完整贡献指南

【免费下载链接】LangAlpha Claude Code for Financial Market 项目地址: https://gitcode.com/gh_mirrors/la/LangAlpha 点击查看 免费下载 本文为 LangAlpha 开发者入门 指南,带你完成开源项目 LangAlpha(Claude Code for Financial Marke…

2026/10/11 13:54:12 阅读更多 →
无界队列会让 maximumPoolSize 失效,这句 Javadoc 很少有人引

无界队列会让 maximumPoolSize 失效,这句 Javadoc 很少有人引

➡️ 程序员曜灵 后端面试追问链 - 欢迎认识我 作者程序员曜灵,绿泡泡「我要拿offer」和小红书同名。 主业在一家大型央企做后端开发,Java 方向,参与过公司内部招聘面试。 这里在拆高频面试题的追问链,一题三层,每层给及格线答案和大多数人挂在哪。 工作日每天一篇,评论区点最…

2026/10/11 13:53:11 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →