news 2026/9/3 9:41:01

face_recognition实战:用face_landmarks定位眼睛和嘴巴,10分钟做出数字化妆效果

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
face_recognition实战:用face_landmarks定位眼睛和嘴巴,10分钟做出数字化妆效果

face_recognition实战:用face_landmarks定位眼睛和嘴巴,10分钟做出数字化妆效果

【免费下载链接】face_recognitionThe world's simplest facial recognition api for Python and the command line项目地址: https://gitcode.com/gh_mirrors/fa/face_recognition

face_recognition是 Python 里最易上手的人脸识别库,而它最“好玩”的功能之一,就是用face_landmarks函数定位脸部的眼睛、眉毛和嘴巴——只需几行代码,10分钟就能做出一款“数字化妆(digital make-up)”工具:自动描眉、涂唇彩、给眼睛加高光。本文面向新手,带你从零跑通这个完整案例。

一、先搞懂:face_landmarks 返回的 68 个关键点是什么?

face_recognition.face_landmarks()会在图片中找出每张脸,并返回一个字典,把 68 个关键点按部位分组。默认使用large模型,包含 7 个区域:

字典键含义用途示例
chin下巴轮廓(17 个点)脸部轮廓遮罩
left_eyebrow/right_eyebrow左/右眉毛(各 5 个点)自动画眉
nose_bridge/nose_tip鼻梁 / 鼻尖立体修容
left_eye/right_eye左/右眼睛(各 6 个点)眼线、眼睛高光、眨眼检测
top_lip/bottom_lip上唇 / 下唇涂口红

每个值都是(x, y)坐标点列表,可以直接拿来画多边形或连线。函数定义在 face_recognition/api.py,如果想用更快的small模型,则只返回鼻子和双眼共 5 个点。

二、一键安装环境

在终端执行下面的命令即可(需已安装 Python 3):

pip3 install face_recognition

想动手跑仓库里的示例,也可以先克隆代码:

git clone https://gitcode.com/gh_mirrors/fa/face_recognition

另外示例脚本用到了 Pillow(画图用),如未安装:pip3 install Pillow

三、第 1 步:加载图片并定位眼睛、嘴巴

核心代码只有两行——加载图片 + 提取关键点,官方示例 examples/find_facial_features_in_picture.py 完整演示了流程:

import face_recognition from PIL import Image, ImageDraw # 1. 加载图片为 numpy 数组 image = face_recognition.load_image_file("two_people.jpg") # 2. 找出图中所有脸的关键点 face_landmarks_list = face_recognition.face_landmarks(image) # 3. 用线条把每个部位描出来 pil_image = Image.fromarray(image) d = ImageDraw.Draw(pil_image) for face_landmarks in face_landmarks_list: for facial_feature in face_landmarks.keys(): d.line(face_landmarks[facial_feature], width=5) pil_image.show()

运行后,你会看到图中每张脸的眉毛、眼睛、嘴巴、下巴都被线框勾勒出来——多张脸也能一次全部定位,这是数字化妆的“地基”。更完整的 API 说明可参考 docs/usage.rst。

四、第 2 步:10 分钟做出数字化妆效果 🎨

地基打好后,只要把“描线”换成“填色”,妆容就出来了。仓库里的 examples/digital_makeup.py 就是官方出品的美妆脚本,效果分四步叠加:

  1. 修眉:用left_eyebrow/right_eyebrow的坐标画多边形填充半透明棕色,再用line描边加粗;
  2. 唇彩:对top_lipbottom_lip填充半透明红色,瞬间变成“咬唇妆”;
  3. 眼睛高光:给left_eye/right_eye多边形填一层白色(透明度很低),模拟“亮眼”效果;
  4. 眼线:把眼睛 6 个点首尾相连成闭合轮廓,用深色粗线描边。

关键就是 PIL 的ImageDraw支持带透明度的RGBA填色,所以妆容可以“叠”在原照片上而不破坏底图:

d = ImageDraw.Draw(pil_image, 'RGBA') # 唇彩:半透明红填充上下唇 d.polygon(face_landmarks['top_lip'], fill=(150, 0, 0, 128)) d.polygon(face_landmarks['bottom_lip'], fill=(150, 0, 0, 128)) # 眼线:眼睛轮廓首尾相连,粗线描边 d.line(face_landmarks['left_eye'] + [face_landmarks['left_eye'][0]], fill=(0, 0, 0, 110), width=6)

把脚本里的biden.jpg换成你自己的照片(注意文件名要和代码一致),运行python digital_makeup.py,一张自动“化妆”后的照片就弹出来了。

五、进阶玩法:用眼睛关键点做眨眼检测 👀

除了化妆,left_eye/right_eye的 6 个点还能算出眼睛纵横比(EAR):眼睛闭上时比值会骤降。仓库示例 examples/blink_detection.py 就基于这个原理实现了“闭眼 5 秒提醒”,思路同样简单:

  1. 从摄像头实时读取帧,调用face_recognition.face_landmarks()提取关键点;
  2. 用双眼上下眼角点到瞳孔中心点的距离算出 EAR 值;
  3. EAR 低于阈值(约 0.2)判定为闭眼,持续 5 秒就打印 “EYES CLOSED”。

也就是说,同一个face_landmarksAPI,既能当美妆工具,也能做疲劳检测,这正是 68 关键点最大的价值。

六、小结与常用文件清单

回顾一下本教程用到的核心 API 和文件:

  • face_recognition.load_image_file():加载图片
  • face_recognition.face_landmarks():定位 68 个脸部关键点(眼睛、嘴巴、眉毛、下巴),定义见 face_recognition/api.py
  • examples/digital_makeup.py:数字化妆完整脚本
  • examples/find_facial_features_in_picture.py:关键点描线示例
  • examples/blink_detection.py:眨眼检测示例
  • docs/usage.rst:官方用法文档

从定位到“上色”总共不到 40 行代码。不妨现在就换一张自己的照片跑一遍——10 分钟后,你的“数字化妆”作品就诞生了 ✨

【免费下载链接】face_recognitionThe world's simplest facial recognition api for Python and the command line项目地址: https://gitcode.com/gh_mirrors/fa/face_recognition

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 9:39:01

yuzu Switch 模拟器快速教程:30分钟从零跑通第一局游戏

yuzu Switch 模拟器快速教程:30分钟从零跑通第一局游戏 【免费下载链接】yuzu 任天堂 Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu 客厅那台 Switch 又被家人拿去追剧,你的存档却卡在半章。其实不必干等——用 yuzu 这…

作者头像 李华
网站建设 2026/9/3 9:38:28

微信小程序广告变现实战:星座运势项目源码解析与流量主集成指南

简介:这是一套面向微信小程序开发者与星座类应用爱好者的技术资源,提供完整的十二星座运势查询小程序源码,解决个性化运势展示、多维度运势评分与激励视频商业化集成等实际开发需求。资源包为ZIP格式,大小1.15MB,包含小…

作者头像 李华
网站建设 2026/9/3 9:37:42

AI数字人实战:GPU版PyTorch安装与常见故障排查

在“AI互动数字人WebRTC音视频实战”这个系列里,真正决定数字人交互体验的并不是只有 WebRTC 推流和拉流本身,而是媒体链路前后所依赖的人工智能模型。一个典型的本地数字人流程至少包含:音频采集、语音识别、对话生成、语音合成、口型或表情…

作者头像 李华
网站建设 2026/9/3 9:35:03

Python IndexError异常全面解析:从原理到实战解决方案

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

作者头像 李华