opencv+mediapipe实现人脸检测及摄像头实时示例

OpenCV+MediaPipe实现人脸检测及摄像头实时示例

本文将介绍使用OpenCV和MediaPipe库实现人脸检测的步骤,并提供两个示例:

  1. 人脸检测及关键点标注
  2. 摄像头实时人脸检测及关键点标注

安装所需库

首先,需要安装好OpenCV和MediaPipe库。

对于Python用户,可以使用pip命令来安装

pip install opencv-python
pip install mediapipe

人脸检测及关键点标注

在本示例中,使用的是Mediapipe库中的FaceMesh模块进行人脸检测和关键点标注。

import cv2
import mediapipe as mp

cap = cv2.VideoCapture(0)

mp_face_mesh = mp.solutions.face_mesh
face_mesh = mp_face_mesh.FaceMesh()

while True:
    ret, frame = cap.read()

    # 反转图像
    frame = cv2.flip(frame, 1)

    # 检测人脸
    result = face_mesh.process(frame)

    # 获取关键点坐标
    if result.multi_face_landmarks:
        for face_landmarks in result.multi_face_landmarks:
            for landmark in face_landmarks.landmark:
                x = int(landmark.x * frame.shape[1])
                y = int(landmark.y * frame.shape[0])
                # 在关键点处绘制圆点
                cv2.circle(frame, (x, y), 3, (0, 255, 0), -1)

    cv2.imshow('Face Mesh', frame)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

在这段代码中,我们直接调用了FaceMesh模块,并通过调用其process()方法来实现人脸检测和关键点标注。其中用到了cv2.flip()方法来实现镜像翻转的效果,以提高用户体验。

摄像头实时人脸检测及关键点标注

在这个示例中,我们将使用OpenCV自带的摄像头,并将检测结果实时显示到窗口中。

import cv2
import mediapipe as mp

mp_face_mesh = mp.solutions.face_mesh
face_mesh = mp_face_mesh.FaceMesh()

cap = cv2.VideoCapture(0)

while True:
    ret, frame = cap.read()

    # 反转图像
    frame = cv2.flip(frame, 1)

    # 检测人脸
    result = face_mesh.process(frame)

    # 获取关键点坐标
    if result.multi_face_landmarks:
        for face_landmarks in result.multi_face_landmarks:
            for landmark in face_landmarks.landmark:
                x = int(landmark.x * frame.shape[1])
                y = int(landmark.y * frame.shape[0])
                # 在关键点处绘制圆点
                cv2.circle(frame, (x, y), 3, (0, 255, 0), -1)

    # 显示结果
    cv2.imshow('Face Mesh', frame)

    # 按 'q'键 退出程序
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 释放摄像头并销毁所有窗口
cap.release()
cv2.destroyAllWindows()

在这个示例中,我们使用了OpenCV自带的VideoCapture()函数获取到了摄像头的输入,并将实时检测的结果实时显示在窗口中。另外,我们也可使用cv2.imwrite()和cv2.VideoWriter()方法将实时输出保存为图片和视频文件。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:opencv+mediapipe实现人脸检测及摄像头实时示例 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • 在python中读取和写入CSV文件详情

    让我们来详细讲解在Python中读取和写入CSV文件的完整攻略。CSV文件是一种通用文件格式,常用于将标签分隔的数据导入或导出到不同软件应用程序和系统之间。在Python中,我们可以使用内置的CSV模块来处理CSV文件。 读取CSV文件 首先,我们需要导入csv模块。接下来,我们可以使用csv.reader函数来逐行读取文件中的数据,并将其转换为列表。列表中…

    python 2023年6月3日
    00
  • 深入理解Python中字典的键的使用

    深入理解 Python 中字典的键的使用攻略 简介 字典(Dictionary)是 Python 中常用的一种数据类型,它可以存储任意数量的键值对,并且可以通过键来快速访问值。在 Python 中,字典的键可以是任何不可变类型,例如字符串、整数、元组等。本文将深入探讨 Python 中字典的键的使用方法。 访问字典中的值 要访问字典中的值,可以使用字典名加上…

    python 2023年5月13日
    00
  • 一文带你玩转MySQL获取时间和格式转换各类操作方法详解

    一文带你玩转MySQL获取时间和格式转换各类操作方法详解 获取当前日期/时间 获取当前日期 获取当前日期可以使用函数CURDATE(),该函数返回的是当前日期的字符串。下面是一个示例: SELECT CURDATE(); 输出如下所示: CURDATE() 2021-08-03 获取当前时间 获取当前时间可以使用函数CURTIME(),该函数返回的是当前时间…

    python 2023年6月2日
    00
  • Python 获取命令行参数内容及参数个数的实例

    下面是详细的攻略: 1. 获取命令行参数内容及参数个数 在Python中,可以通过sys模块中的argv来获取命令行参数内容及参数个数。 1.1 获取参数个数 下面是一个获取参数个数的示例: import sys print("参数个数为:", len(sys.argv)) 其中,sys.argv返回的是一个列表,包含了所有的命令行参数,…

    python 2023年6月3日
    00
  • 8段用于数据清洗Python代码(小结)

    下面我来为您详细讲解“8段用于数据清洗Python代码(小结)”的完整攻略。 一、背景介绍 在进行数据分析或机器学习时,原始数据通常需要进行清洗和处理以提高数据的质量和可用性。本文介绍了8段常用的Python代码,可对数据进行清洗和处理,并对这些代码的使用进行了详细的说明。 二、代码段介绍 1. 去除重复值 在数据清洗过程中,经常需要去除重复的行或记录。使用…

    python 2023年6月6日
    00
  • Python中命令行参数argparse模块的使用

    一、介绍 Python中有一个很强大的命令行参数解析模块 argparse ,使用 argparse 可以非常方便地解析命令行参数并生成帮助信息。argparse 模块可以自动生成帮助信息,还可以自动检查参数和选项的类型以及输入的值是否合法。 二、基本使用 在使用 argparse 之前,需要先导入 argparse 库: import argparse 接…

    python 2023年6月3日
    00
  • python 命令行传参方法总结

    下面是关于“Python 命令行传参方法总结”的完整攻略: Python 命令行传参方法总结 在编写 Python 脚本时,我们通常需要从命令行传入一些参数。这篇文章将介绍 Python 中命令行传参的几种方法,包括使用 argparse 模块、使用 sys 模块以及使用 getopt 模块。 使用 argparse 模块 argparse 模块是 Pyth…

    python 2023年6月3日
    00
  • 解决pyshp UnicodeDecodeError的问题

    以下是关于解决pyshp UnicodeDecodeError 的问题的完整攻略: 问题描述 在使用pyshp库读取Shapefile文件时,可能会遇到UnicodeDecodeError错误。这个错误通是由于文件中包含非ASCII字符而引起的。解决这个问题可以帮助我们正确地读取Shapefile文件。 解决方法 使用以下步骤解决pyshp UnicodeD…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部