博客
关于我
Opencv+Mediapipe->人脸特征点检测
阅读量:798 次
发布时间:2023-04-15

本文共 2698 字,大约阅读时间需要 8 分钟。

初识 MediaPipe

在 MediaPipe 中进行人脸特征点检测,可以利用其提供的预训练模型和丰富的功能库。MediaPipe 提供了名为 "FaceMesh" 的模型,专门用于实时检测人脸的 468 个关键特征点。

以下是使用 MediaPipe 进行人脸特征点检测的基本操作步骤:

  • 安装 MediaPipe:首先,你需要安装 MediaPipe 框架。
  • 设置输入和输出:确定输入数据来源(如摄像头、视频文件或图片),并设置输出以存储检测到的人脸特征点。
  • 创建 MediaPipe 图:使用 MediaPipe 框架的 API,创建一个图来加载 "FaceMesh" 模型并处理输入数据。
  • 运行图:将输入数据传递给 MediaPipe 图的输入节点,并通过输出节点获取结果,完成人脸特征点检测。
  • 处理结果:从输出节点获取检测到的人脸特征点数据,并根据需求进行后续分析或应用集成。
  • MediaPipe 的 "FaceMesh" 模型能够自动定位并识别人脸图像中的关键特征点,如眼睛、眉毛、鼻子、嘴巴等。你可以根据具体需求选择使用的特征点集合。

    此外,MediaPipe 还提供了其他功能和模型,例如手部检测、姿态估计等,极大地扩展了应用场景。

    人脸特征点检测

    (1)安装开发环境

    pip install opencv-python pip install mediapipe==0.8.3.1

    (2)OpenCV 加载视频

    代码示例:

    import cv2 import mediapipe as mp import time

    cap = cv2.VideoCapture("Video/6.mp4") # 加载视频文件

    pTime = 0

    while True:

    success, img = cap.read()
    imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    cTime = time.time()
    fps = 1 / (cTime - pTime)
    pTime = cTime

    # 显示帧率  cv2.putText(img, f'FPS:{int(fps)}', (20, 70), cv2.FONT_HERSHEY_PLAIN, 3, (0, 255, 0), 3)  cv2.imshow("Image", img)  cv2.waitKey(1)

    效果展示:

    图片展示

    (3)人脸特征点检测

    代码示例:

    import cv2 import mediapipe as mp import time

    cap = cv2.VideoCapture("Video/6.mp4")

    mpDraw = mp.solutions.drawing_utils # 绘制特征点和边界框工具
    faceMesh = mp.solutions.face_mesh.FaceMesh(max_num_faces=2) # 初始化 FaceMesh 模块
    drawSpec = mpDraw.DrawingSpec(thickness=1, circle_radius=2) # 绘图样式设置

    while True:

    success, img = cap.read()
    imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    results = faceMesh.process(imgRGB) # 进行人脸关键点检测

    if results.multi_face_landmarks:      for faceLms in results.multi_face_landmarks:          mpDraw.draw_landmarks(img, faceLms, mpFaceMesh.FACE_CONNECTIONS, drawSpec, drawSpec)  # 绘制关键点          for id, lm in enumerate(faceLms.landmark):              ih, iw, ic = img.shape              x, y = int(lm.x * iw), int(lm.y * ih)              print(f"关键点 {id}:({x}, {y})")  cTime = time.time()  fps = 1 / (cTime - pTime)  pTime = cTime  # 显示帧率  cv2.putText(img, f'FPS:{int(fps)}', (20, 70), cv2.FONT_HERSHEY_PLAIN, 3, (0, 255, 0), 3)  cv2.imshow("Image", img)  cv2.waitKey(1)

    效果展示:

    图片展示

    应用前景

    人脸特征点检测技术在计算机视觉和人工智能领域具有广阔的应用前景,主要体现在以下几个方面:

  • 人脸识别与身份验证: 人脸特征点检测是实现人脸识别和身份验证的基础。通过精准检测人脸的关键特征点(如眼睛、鼻子、嘴巴等),可以建立独特的面部特征表示。这一技术广泛应用于安全门禁系统、移动设备解锁、在线支付验证等领域。
  • 表情分析与情感识别: 人脸特征点检测能够分析人脸表情和情感状态。通过检测眼睛、眉毛、嘴角等关键特征点的位置和变化,可以判断人脸表情(如笑容、愤怒、悲伤等)。这一技术在社交媒体分析、市场调研、情感识别技术等场景中具有重要价值。
  • 人脸美化与虚拟化妆: 人脸特征点检测为人脸美化和虚拟化妆提供了技术支持。通过识别面部关键特征点,可以对面部特征进行分析和修改(如调整眼睛大小、优化嘴型等),实现自然美化效果。这一功能在手机应用程序、相机软件和虚拟试妆等领域备受欢迎。
  • 人脸变换与融合: 人脸特征点检测技术可以用于实现人脸变换与融合效果。通过检测多张人脸的关键特征点,可以将一张人的面部特征应用到另一张人的图像上,实现面部表情、年龄、性别等方面的转换与融合。这一技术在娱乐应用、电影特效制作和人脸变换软件中具有广泛应用潜力。
  • 视频分析与人机交互: 人脸特征点检测在视频分析和人机交互领域也有重要作用。通过实时检测和跟踪人脸的关键特征点,可以实现面部表情识别、手势识别、头部姿态跟踪等功能。这一技术在增强现实、虚拟现实、游戏开发以及用户体验优化等领域具有巨大的发展潜力。
  • 最后,建议关注我们的深度文章系列,持续获取更多技术深度内容。

    转载地址:http://bzgfk.baihongyu.com/

    你可能感兴趣的文章
    mysql5.7安装
    查看>>
    mysql5.7性能调优my.ini
    查看>>
    MySQL5.7新增Performance Schema表
    查看>>
    Mysql5.7深入学习 1.MySQL 5.7 中的新增功能
    查看>>
    Webpack 之 basic chunk graph
    查看>>
    Mysql5.7版本单机版my.cnf配置文件
    查看>>
    mysql5.7的安装和Navicat的安装
    查看>>
    mysql5.7示例数据库_Linux MySQL5.7多实例数据库配置
    查看>>
    Mysql8 数据库安装及主从配置 | Spring Cloud 2
    查看>>
    mysql8 配置文件配置group 问题 sql语句group不能使用报错解决 mysql8.X版本的my.cnf配置文件 my.cnf文件 能够使用的my.cnf配置文件
    查看>>
    MySQL8.0.29启动报错Different lower_case_table_names settings for server (‘0‘) and data dictionary (‘1‘)
    查看>>
    MYSQL8.0以上忘记root密码
    查看>>
    Mysql8.0以上重置初始密码的方法
    查看>>
    mysql8.0新特性-自增变量的持久化
    查看>>
    Mysql8.0注意url变更写法
    查看>>
    Mysql8.0的特性
    查看>>
    MySQL8修改密码报错ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
    查看>>
    MySQL8修改密码的方法
    查看>>
    Mysql8在Centos上安装后忘记root密码如何重新设置
    查看>>
    Mysql8在Windows上离线安装时忘记root密码
    查看>>