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

OpenCv高阶(十九)——dlib关键点定位

文章目录

  • 一、什么是人脸关键点定位?
  • 二、关键点模型的下载及关键信息的理解
  • 三、dlib关键点定位的简单实现
    • (1)导入必要的库
    • (2)从指定路径读取图像文件
    • (3)创建dlib的正面人脸检测器对象
    • (4)使用检测器在图像上检测人脸
    • (5)加载dlib预训练的人脸关键点定位模型
    • (6)遍历检测到的每个人脸区域
    • (7)显示处理后的图像(包含人脸关键点标记)
  • 四、人脸关键点定位的主要作用和应用
  • 五、主要技术方法
  • 总结


一、什么是人脸关键点定位?

人脸关键点定位(Facial Landmark Detection),也称为人脸特征点检测或人脸对齐,是计算机视觉领域的一项基础任务。它的核心目标是在一张包含人脸的图像中,自动地、精确地定位出人脸上一系列预定义的关键解剖点的位置坐标(通常是二维像素坐标)。
在这里插入图片描述

二、关键点模型的下载及关键信息的理解

关键点模型下载:
官网下载:http://dlib.net/files/
在这里插入图片描述

关键点: 这些点是经过精心选择的,代表了人脸的重要结构和特征。常见的点包括:

眉毛的轮廓点(例如,左右眉峰、眉梢)眼睛的轮廓点(例如,眼角、眼睑)鼻子的轮廓点(例如,鼻尖、鼻翼)嘴巴的轮廓点(例如,嘴角、唇峰、唇谷)脸部的轮廓点(例如,下巴尖、脸颊边缘)有时还包括瞳孔中心、脸颊点等。

定位: 算法需要输出每个关键点的精确坐标 (x, y),这些坐标对应于它们在输入图像中的像素位置。

预定义模型: 关键点的数量和位置通常是预先定义好的标准模型。最常见的模型有:

68点模型: 这是最经典和广泛使用的模型,包括眉毛(每边5点)、眼睛(每边6点)、鼻子(9点)、嘴巴(20点)和脸部轮廓(17点)。5点模型: 更简单,通常定位两个眼睛中心、鼻尖和两个嘴角。常用于快速粗略对齐。106点模型 / 稠密关键点模型: 包含更多点(如脸颊、额头),能更精细地描述人脸形状,常用于高级特效和3D重建。

三、dlib关键点定位的简单实现

(1)导入必要的库

import cv2  # OpenCV库,用于图像处理和计算机视觉任务
import numpy as np  # NumPy库,用于数值计算和数组操作
import dlib  # dlib库,提供强大的机器学习工具,特别擅长人脸检测和特征点定位

(2)从指定路径读取图像文件

img = cv2.imread('../data/man.png')

(3)创建dlib的正面人脸检测器对象

# get_frontal_face_detector()使用HOG特征+SVM分类器检测人脸
detector = dlib.get_frontal_face_detector()

(4)使用检测器在图像上检测人脸

# 参数0表示不进行上采样(原始图像大小检测)
# 返回值faces是一个包含所有检测到的人脸区域的矩形对象列表
faces = detector(img, 0)

(5)加载dlib预训练的人脸关键点定位模型

# 该模型可以定位人脸上的68个关键点(shape_predictor_68_face_landmarks.dat)
predictor = dlib.shape_predictor("../data/shape_predictor_68_face_landmarks.dat")

(6)遍历检测到的每个人脸区域

for face in faces:# 使用关键点定位模型预测当前人脸的68个关键点# shape是一个包含68个关键点坐标的对象shape = predictor(img, face)# 将关键点转换为NumPy数组格式,便于处理# 每个关键点表示为[x, y]坐标landmarks = np.array([[p.x, p.y] for p in shape.parts()])# 遍历所有68个关键点及其索引for idx, point in enumerate(landmarks):# 获取当前关键点的坐标pos = [point[0], point[1]]# 在图像上绘制关键点(绿色实心圆)# 参数说明:#   img: 目标图像#   pos: 圆心坐标#   2: 圆的半径(像素)#   (0,255,0): 颜色(BGR格式,绿色)#   thickness=-1: 实心圆cv2.circle(img, pos, 2, color=(0, 255, 0), thickness=-1)# 在关键点旁边绘制其索引编号(白色文本)# 参数说明:#   img: 目标图像#   str(idx): 要绘制的文本(当前点的索引)#   pos: 文本左下角位置#   cv2.FONT_HERSHEY_SIMPLEX: 字体类型#   0.45: 字体缩放比例#   (255,255,255): 文本颜色(白色)#   1: 文本线宽#   cv2.LINE_AA: 抗锯齿线型cv2.putText(img, str(idx), pos, cv2.FONT_HERSHEY_SIMPLEX, 0.45, (255, 255, 255), 1, cv2.LINE_AA)

(7)显示处理后的图像(包含人脸关键点标记)

cv2.imshow('img', img)# 等待键盘输入(0表示无限等待)
cv2.waitKey(0)#)销毁所有OpenCV创建的窗口
cv2.destroyAllWindows()

效果展示
在这里插入图片描述
同样此处依然可以引入摄像头,实时对人脸进行关键点定位。

四、人脸关键点定位的主要作用和应用

人脸对齐: 这是最基础也是最重要的应用。通过定位关键点,可以将不同姿态、尺度、位置的人脸图像“矫正”到一个标准姿态(通常是正面朝前),极大地提高后续人脸识别、表情识别等任务的准确性和鲁棒性。

人脸识别/验证: 对齐后的人脸特征更容易进行比较和匹配。

表情识别: 关键点位置的变化(如嘴角上扬、眉毛皱起)是分析面部表情的关键线索。

人脸姿态估计: 根据关键点的分布和相对位置,可以估计人脸在三维空间中的朝向(偏航角、俯仰角、翻滚角)。

人脸美化/美颜: 瘦脸、大眼、美妆等滤镜效果需要精确知道眼睛、嘴巴、脸型的位置才能精准施加效果。

虚拟化妆/试妆: 在嘴唇、眼睑等部位叠加虚拟妆容需要精确定位。

增强现实: 在脸上叠加虚拟面具、眼镜、贴纸或特效(如动物鼻子、胡子)需要关键点作为锚点。

人机交互: 通过跟踪关键点的运动(如眨眼、张嘴)实现非接触式控制。

3D人脸重建: 稠密的关键点是构建高精度3D人脸模型的重要输入。

医学分析: 辅助分析某些面部特征或表情(如某些疾病的早期面部表征)。

疲劳驾驶检测: 通过检测眼睛开合程度、打哈欠(嘴部动作)等关键点状态判断驾驶员状态。

动画与游戏: 驱动虚拟角色的面部表情。

五、主要技术方法

传统方法:

主动形状模型: 通过迭代调整一个初始的平均人脸形状模型来拟合图像特征。主动外观模型: 在ASM基础上,不仅考虑形状,还考虑纹理(外观)信息。约束局部模型: 为每个关键点训练独立的局部检测器,并利用形状约束来优化整体结果。

深度学习方法 (主流):

使用卷积神经网络直接学习从输入图像到关键点坐标的映射,通常视为一个回归问题。常见网络架构:各种定制的CNN、Hourglass网络、HRNet等。通常输出一个包含所有关键点坐标的向量,或者一个关键点位置的热力图。训练需要大量标注好关键点位置的人脸图像数据集。

总结

人脸关键点定位是让计算机“看懂”人脸结构的基础技术。它通过精确定位一系列预定义的面部特征点,为众多上层应用(人脸识别、表情分析、美颜滤镜、AR特效等)提供了至关重要的几何结构信息。虽然深度学习方法极大地提升了定位的精度和鲁棒性,但在处理极端姿态、严重遮挡和复杂光照等场景时仍存在挑战,是计算机视觉领域持续研究的重要方向。

相关文章:

  • 【.net core】Rotativa 如何在linux上实现
  • Vue Hook Store 设计模式最佳实践指南
  • laya3的2d相机与2d区域
  • 嵌入式软件--stm32 DAY 8.5 基础复习总结
  • 高光谱成像相机:基于高光谱成像技术的玉米种子纯度检测研究
  • 抖音、快手无水印福音开源下载器之蓝猫 BlueCatKoKo
  • 安科瑞Acrelcloud-6200系统:智慧路灯安全用电监控平台架构解析
  • Day06
  • Vue3实现折叠面板
  • 如何更好的理解云计算和云原生?
  • 自动驾驶与智能交通:构建未来出行的智能引擎
  • 【Linux】网络--传输层--深入理解TCP协议
  • 微服务各个部分的作用
  • 自动驾驶中的路径跟踪:Python实现与技术解析
  • Free2AI:企业智能化转型的加速器
  • C++通用日志模块
  • 【Linux篇】叩响新世界的大门:线程
  • 在VirtualBox中打造高效开发环境:CentOS虚拟机安装与优化指南
  • vue3 导出excel
  • 第一章 Linux的例行性工作(计划任务)
  • wordpress搭建漫画站/亚洲长尾关键词挖掘
  • 怎么建立一个群/网络优化工程师是干什么的
  • 网站首页该怎么做/百度移动端关键词优化
  • 小说网站怎么做流量/百度热搜榜排名今日
  • 服务网站建设的公司排名/百度seo排名技术必不可少
  • 网站引导页是什么意思/网站大全软件下载