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

yizhihongxing

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 实现进度条的六种方式

    Python 实现进度条的六种方式 在 Python 编程中,经常需要在程序执行某些耗时操作时实时显示进度条,以提升用户体验和程序可读性。 本篇攻略将介绍 Python 实现进度条的常用技巧,其中会涉及到六种方式,包括: 在命令行窗口打印简单进度条 在命令行窗口使用第三方库给进度条增加颜色、样式等 使用 tqdm 库在控制台中实现进度条 使用 progres…

    python 2023年5月19日
    00
  • python中使用.py配置文件的方法详解

    Python中使用.py配置文件的方法详解 在Python开发中,我们通常需要读取配置文件,将一些地址、路径、参数等内容从代码中独立出来,方便管理和维护。Python支持常见的多种配置文件格式,如INI格式、JSON格式、XML格式等,其中.py格式配置文件则相对比较特殊,其特殊之处在于.py格式本身就是Python模块,可以直接在代码中引用,具有更高的灵活…

    python 2023年5月30日
    00
  • python虚拟环境完美部署教程

    Python虚拟环境完美部署教程 在 Python 应用程序开发中,为了让不同的项目之间互不干扰,我们经常需要使用 Python 虚拟环境。虚拟环境能够在本地模拟出一个独立的空间,可以安装不同版本的 Python、各种第三方模块等等。本教程将详细介绍如何使用 Python 的虚拟环境来进行项目开发。 安装虚拟环境工具 – virtualenv 使用 Pyth…

    python 2023年5月30日
    00
  • Python实现基于标记的分水岭分割算法

    Python实现基于标记的分水岭分割算法 分水岭分割算法是一种基于图像的分割方法,它可以将图像分成多个区域,每个区域具有不同的特征。在本文中,我们将介绍如何使用Python实现基于标记的分水岭分割算法。 算法原理 分水岭分割算法的基本思想是将图像看作一个地形图,其中灰度值表示高度。我们可以将图像中的每个像素看作一个点,将相邻的像素之间连接起来形成一张图。然后…

    python 2023年5月14日
    00
  • Python读取xlsx文件的实现方法

    下面我将为你详细讲解Python读取xlsx文件的实现方法的完整实例教程。 1. 准备工作 首先,需要安装Python的第三方库openpyxl来实现读取xlsx文件,可以通过pip命令进行安装。 pip install openpyxl 2. 实现方法 2.1 打开xlsx文件 首先需要打开xlsx文件,可以使用openpyxl.Workbook方法来打开…

    python 2023年5月13日
    00
  • 详解python读取image

    下面我将为你详细讲解如何使用Python读取image文件。 什么是Image文件 Image文件指的是各种图片格式的文件。常见的图片格式包括jpg、png、bmp等。 Python读取Image文件的库 Python中有很多第三方库可以用来读取Image文件,比如Pillow、OpenCV、matplotlib等。 其中Pillow的用法比较简单,且易于使…

    python 2023年5月18日
    00
  • python开头的coding设置方法

    当使用Python脚本创建或编辑文件时,我们需要指定编码类型。使用coding:格式如 # coding: 。 “coding设置方法”有两种方式: 1. 通过# coding声明 在Python程序的第一行或第二行,添加注释# coding= 以指定该程序文件的编码 示例: # coding: utf-8 print("生命不息,学习不止&quo…

    python 2023年5月20日
    00
  • Python内置数据类型list各方法的性能测试过程解析

    以下是详细讲解“Python内置数据类型list各方法的性能测试过程解析”的完整攻略。 在Python中,list是一种常用的数据类型,提供了多种方法来操作和处理数据。本文将介绍list的各种方法,并使用timeit块对其性能进行测试。 list的各种方法 append() append()方法用于向的末尾添加一个元素。例如: lst = [1, 2, 3,…

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