【机器视觉】Python+OpenCV+MediaPipe实时人流检测

简介: MediaPipe 人脸检测是一种超快的人脸检测解决方案,带有 6 个地标和多人脸支持。它基于 BlazeFace,这是一种轻量级且性能良好的人脸检测器,专为移动 GPU 推理量身定制。检测器的超实时性能使其能够应用于任何需要准确的面部感兴趣区域作为其他任务特定模型输入的实时取景器体验。


安装所需模块:


pip install cv2

pip install midiapipe


MidiaPipe

MediaPipe 为直播和流媒体提供跨平台、可定制的机器学习解决方案。


  • 端到端加速引擎:内置的快速 ML 推理和处理即使在常见硬件上也能加速
  • 一次构建,任意部署:统一解决方案适用于 Android、iOS、桌面/云、Web 和物联网
  • 即用型解决方案:先进的机器学习解决方案展示了框架的全部功能
  • 免费开源:Apache 2.0下的框架和解决方案,完全可扩展和可定制


FaceDetection模型

MediaPipe 人脸检测是一种超快的人脸检测解决方案,带有 6 个地标和多人脸支持。它基于 BlazeFace,这是一种轻量级且性能良好的人脸检测器,专为移动 GPU 推理量身定制。检测器的超实时性能使其能够应用于任何需要准确的面部感兴趣区域作为其他任务特定模型输入的实时取景器体验,例如 3D 面部关键点或几何估计(例如 MediaPipe Face Mesh),面部特征或表情分类,以及面部区域分割。 BlazeFace 使用了一个轻量级特征提取网络,其灵感来自 MobileNetV1/V2,但与 MobileNetV1/V2 不同,它是一种从 Single Shot MultiBox Detector (SSD) 修改而来的 GPU 友好锚点方案,以及一种替代非极大值抑制的改进的 tie 分辨率策略。


论文名称:SSD: Single Shot MultiBox Detector
原文地址:Single Shot
配置模型参数


with mp_face_detection.FaceDetection(

       model_selection=1, min_detection_confidence=0.5) as face_detection:


  • model_selection:使用 0 选择最适合距离相机 2 米以内的人脸的短距离模型,使用 1 选择最适合距离相机 5 米以内的人脸的全距离模型。
  • min_detection_confidence:人脸检测模型的最小置信值 ([0.0, 1.0]),以便将检测视为成功。默认为 0.5。

人脸地标


检测到的人脸的集合,其中每个人脸都表示为一个检测集合,其中包含一个边界框和 6 个关键点(右眼、左眼、鼻尖、嘴巴中心、右耳和左耳)。
边界框由 xmin 和宽度和 ymin 和高度组成。每个关键点由 x 和 y 组成,分别通过图像宽度和高度归一化为 [0.0, 1.0]。


if results.detections:

           for detection in results.detections:  # 获取人脸地标

               people += 1

               mp_drawing.draw_detection(image, detection)



部分代码


本项目可以使用文件输入和摄像头进行输入,下面代码采用的是文件输入,如果需要使用摄像头作为输入源,只需要将 cap = cv2.VideoCapture("video/finger3.MP4") 内部参数置为0即可,不过还需要调整一下其它位置,这里不做过多叙述。


import cv2

import mediapipe as mp

mp_face_detection = mp.solutions.face_detection  # 人脸检测器

mp_drawing = mp.solutions.drawing_utils  # 绘制人脸地标

cap = cv2.VideoCapture('video/head3.MP4')  # 视频输入源

with mp_face_detection.FaceDetection(

       model_selection=1, min_detection_confidence=0.5) as face_detection:

   while cap.isOpened():

       success, image = cap.read()

       if not success:

           print("Ignoring empty camera frame.")

           break

       image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

       results = face_detection.process(image)

       image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)  # 将图片转化为标准RGB格式

       people = 0

       if results.detections:

           for detection in results.detections:  # 获取人脸地标

               people += 1

               mp_drawing.draw_detection(image, detection)

       print(fr'[视频中人数:{people}] ')

       # 设置窗口大小

       cv2.namedWindow("image", 0)

       cv2.resizeWindow("image", 500, 460)

       cv2.imshow('image', image)

       if cv2.waitKey(10) & 0xFF == 27:

           break

cap.release()

目录
相关文章
|
计算机视觉
Opencv学习笔记(八):如何通过cv2读取视频和摄像头来进行人脸检测(jetson nano)
如何使用OpenCV库通过cv2模块读取视频和摄像头进行人脸检测,并提供了相应的代码示例。
610 1
|
XML 机器学习/深度学习 人工智能
使用 OpenCV 和 Python 轻松实现人脸检测
本文介绍如何使用OpenCV和Python实现人脸检测。首先,确保安装了OpenCV库并加载预训练的Haar特征模型。接着,通过读取图像或视频帧,将其转换为灰度图并使用`detectMultiScale`方法进行人脸检测。检测到的人脸用矩形框标出并显示。优化方法包括调整参数、多尺度检测及使用更先进模型。人脸检测是计算机视觉的基础技术,具有广泛应用前景。
933 10
|
机器学习/深度学习 计算机视觉
目标检测笔记(六):如何结合特定区域进行目标检测(基于OpenCV的人脸检测实例)
本文介绍了如何使用OpenCV进行特定区域的目标检测,包括人脸检测实例,展示了两种实现方法和相应的代码。
687 1
目标检测笔记(六):如何结合特定区域进行目标检测(基于OpenCV的人脸检测实例)
|
机器学习/深度学习 算法 计算机视觉
【Python篇】Python + OpenCV 全面实战:解锁图像处理与视觉智能的核心技能
【Python篇】Python + OpenCV 全面实战:解锁图像处理与视觉智能的核心技能
718 7
|
计算机视觉 Python
python利用pyqt5和opencv打开电脑摄像头并进行拍照
本项目使用Python的PyQt5和OpenCV库实现了一个简单的摄像头应用。用户可以通过界面按钮打开或关闭摄像头,并实时预览视频流。点击“拍照”按钮可以捕捉当前画面并保存为图片文件。该应用适用于简单的图像采集和处理任务。
1256 0
python利用pyqt5和opencv打开电脑摄像头并进行拍照
|
机器学习/深度学习 计算机视觉 Python
opencv环境搭建-python
本文介绍了如何在Python环境中安装OpenCV库及其相关扩展库,包括numpy和matplotlib,并提供了基础的图像读取和显示代码示例,同时强调了使用Python虚拟环境的重要性和基本操作。
|
机器学习/深度学习 人工智能 监控
利用Python和OpenCV实现实时人脸识别系统
【8月更文挑战第31天】本文将引导您了解如何使用Python结合OpenCV库构建一个简易的实时人脸识别系统。通过分步讲解和示例代码,我们将探索如何从摄像头捕获视频流、进行人脸检测以及识别特定个体。本教程旨在为初学者提供一条明晰的学习路径,帮助他们快速入门并实践人脸识别技术。
1232 1
|
机器学习/深度学习 算法 计算机视觉
基于opencv与mediapipe的民族舞舞蹈动作识别
基于opencv与mediapipe的民族舞舞蹈动作识别
737 0
|
算法 计算机视觉 Python
圆形检测算法-基于颜色和形状(opencv)
该代码实现了一个圆检测算法,用于识别视频中的红色、白色和蓝色圆形。通过将图像从RGB转换为HSV颜色空间,并设置对应颜色的阈值范围,提取出目标颜色的区域。接着对这些区域进行轮廓提取和面积筛选,使用霍夫圆变换检测圆形,并在原图上绘制检测结果。
942 0
|
计算机视觉
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
这篇文章详细介绍了OpenCV库中的图像二值化函数`cv2.threshold`,包括二值化的概念、常见的阈值类型、函数的参数说明以及通过代码实例展示了如何应用该函数进行图像二值化处理,并展示了运行结果。
4970 0
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解

热门文章

最新文章

推荐镜像

更多