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中在脚本中引用其他文件函数的实现方法

    在Python中,常常需要在脚本中引用其他文件的函数。为了实现这一目标,可以使用Python的模块化编程方式。模块是一个包含Python定义和语句的文件,其扩展名为.py。Python模块可以包括变量、函数、类和其他Python对象。可以将Python模块看做是一个包含可在其他Python程序中使用的Python代码的集合。 以下是Python中在脚本中引用…

    python 2023年6月3日
    00
  • 基于Python实现一个简易的数据管理系统

    基于Python实现一个简易的数据管理系统 数据管理系统是一种用于管理和处理数据的软件系统。在本文中,我们将介绍如何使用Python实现一个简易的数据管理系统,包括如何创建数据库、添加、查询数据删除数据。 创建数据库 在Python中,可以使用SQLite3库来创建和管理数据库。SQLite3是一种轻量级的关系数据库,它可以在本地文件中存储数据。下面是一个示…

    python 2023年5月14日
    00
  • spark编程python实例解读

    Spark编程Python实例解读 简介 Apache Spark是一个快速且通用的集群计算系统。Spark提供了Python、Java和Scala三种编程语言的API。Python是一种常用的编程语言,因此使用Python编写Spark程序非常流行。在本攻略中,我们将介绍如何使用Python编写Spark程序,并通过两个实例进行演示。 环境配置 在开始编写…

    python 2023年6月3日
    00
  • Django框架验证码用法实例分析

    下面我来详细讲解一下“Django框架验证码用法实例分析”的完整攻略。 1. 什么是验证码? 验证码是指需要用户输入的一种区别于密码的识别字符,通常是由数字或字母组成,主要用于防止机器人恶意提交表单,保护网站安全和用户隐私。 2. Django中的验证码 Django中提供了很多验证码的第三方库,其中比较流行的有以下几种: django-captcha dj…

    python 2023年6月3日
    00
  • python读取excel指定列数据并写入到新的excel方法

    下面我将详细讲解Python读取Excel指定列数据并写入到新的Excel方法的完整实例教程。 准备工作 在开始之前,我们需要先安装一些必要的包: pandas:数据分析库,提供快速、灵活且富有表现力的数据结构,目的是为了让数据的清洗、转换、分析工作快速、简单、有表现力。 openpyxl:操作Excel的一个Python库,可以读取和写入Excel文档。 …

    python 2023年5月13日
    00
  • 使用Python实现博客上进行自动翻页

    下面是使用Python实现博客自动翻页的攻略: 1. 确定需要抓取的博客网站 首先需要确定需要抓取的博客网站,并对该网站的页面结构进行分析。这里以csdn博客网站为例。 2. 安装requests和BeautifulSoup库 在Python中,可以使用requests库进行网页请求,使用BeautifulSoup库解析网页内容。如果还未安装这两个库,可以通…

    python 2023年5月19日
    00
  • Python3直接爬取图片URL并保存示例

    下面是关于Python3直接爬取图片URL并保存的攻略: 1. 准备工作 在爬取图片之前需要进行一些准备工作: 安装Python3 安装requests库和beautifulsoup4库,这两个库是用来发送HTTP请求和解析HTML的,可以使用pip安装:pip install requests beautifulsoup4 2. 爬取图片URL 要爬取图片…

    python 2023年6月3日
    00
  • Python 列表 vs C 数组:慢 100 倍? [关闭]

    【问题标题】:Python lists vs C arrays : 100x slower? [closed]Python 列表 vs C 数组:慢 100 倍? [关闭] 【发布时间】:2023-04-06 12:12:01 【问题描述】: 据我了解,Python 列表是作为向量实现的。这就是为什么我无法解释为什么以下代码在 Python 中比等效的 C …

    Python开发 2023年4月6日
    00
合作推广
合作推广
分享本页
返回顶部