基于 Google MediaPipe 进行人体姿势估计演示

用于人体姿势估计的 MediaPipe 演示

MediaPipe简介

MediaPipe是一个开源框架,用于构建跨平台、多模式应用机器学习管道。它由 Google 开发,旨在促进基于机器学习的功能的快速开发和部署,特别关注音频、视频和时间序列数据。

我可以将 MediaPipe 用于商业用途来运营我的业务吗?

我们可以将MediaPipe用于商业目的。 MediaPipe 是根据 Apache License 2.0 发布的开源框架,这是一种宽松的自由软件许可证。这意味着我们可以根据许可条款使用、修改和分发该软件,包括用于商业用途。MediaPipe 可以成为商业项目的强大工具。尽管如此,理解并遵守许可条款、评估应用程序的技术适用性并注意法律和监管因素仍然很重要。

我可以在 CPU 计算机上运行 MediaPipe 吗?

我们可以在 CPU 上运行 MediaPipe。MediaPipe 被设计为跨平台且灵活,使其可以在各种硬件配置上运行,包括标准 CPU。始终支持 GPU 或 TPU,使用此类硬件可以增强性能,特别是对于更复杂的模型或实时应用程序。

我可以在 macOS 上运行 MediaPipe 吗?

我们可以在 macOS 上运行 MediaPipe。MediaPipe 设计为跨平台,支持各种操作系统,包括 macOS、Windows、Linux 以及 Android 和 iOS 等移动平台。

当我们安装 MediaPipe 时,是否会下载预训练的权重?

当我们使用 pip 安装 MediaPipe 时,它会随包一起下载预先训练的模型权重。这是因为 MediaPipe 的模型(包括姿势估计模型 BlazePose)旨在以最少的设置“开箱即用”。模型权重捆绑在 MediaPipe 包中,允许我们在安装后立即使用模型,无需任何额外的步骤来下载权重。

macOS 上 MediaPipe 的安装步骤

机器配置 — macOS,版本 — 13.6.1,Mac 中的总 RAM 为 16.0 GB。要在 macOS 上安装 MediaPipe,请按照以下步骤操作。请注意,该过程主要涉及设置Python环境并通过pip安装MediaPipe包。这是详细的演练:

先决条件

  • Python:确保我们已安装 Python。MediaPipe 与 Python 3.6 或更高版本配合良好。我们可以通过python3 --version在终端中运行来检查我们的 Python 版本。我的 conda 环境中安装的当前 Python 版本是 Python 3.11.6。

  • pip:确保已安装 pip(Python 包管理器)。如果没有,我们可以从Python 官方网站将其与 Python 一起安装。

安装步骤

  1. 我正在使用 Anaconda 环境来安装运行 MediaPipe 人体姿势估计所需的所有软件包。

  2. 打开终端并使用以下命令创建 Anaconda 环境。更新 pip (可选):拥有最新版本的 pip 是一个很好的做法。使用以下命令更新它:

conda create --name mediapipe python=3.11
conda activate mediapipe
python3 -m pip install --upgrade pip

3. 安装MediaPipe:

激活虚拟环境后,运行以下命令:

pip install mediapipe

为了确保正确安装 MediaPipe,请运行以下命令。

python3
>>> import mediapipe as mp

4381547a9350ff1cc8c989d5735c9c77.jpeg

MediaPipe 的正确安装

4. 安装OpenCV

使用以下命令安装 OpenCV,因为我们在多个步骤中都需要它。

pip install opencv-python

这是我在 Anaconda 虚拟环境中安装的内容。

Package                 Version
----------------------- --------
absl-py                 2.0.0
attrs                   23.1.0
cffi                    1.16.0
contourpy               1.2.0
cycler                  0.12.1
flatbuffers             23.5.26
fonttools               4.47.0
kiwisolver              1.4.5
matplotlib              3.8.2
mediapipe               0.10.9
numpy                   1.26.2
opencv-contrib-python   4.8.1.78
opencv-python           4.8.1.78
packaging               23.2
Pillow                  10.1.0
pip                     23.3.2
protobuf                3.20.3
pycparser               2.21
pyparsing               3.1.1
PyQt6                   6.5.2
PyQt6-3D                6.5.0
PyQt6-Charts            6.5.0
PyQt6-DataVisualization 6.5.0
PyQt6-NetworkAuth       6.5.0
PyQt6-sip               13.5.2
PyQt6-WebEngine         6.5.0
python-dateutil         2.8.2
setuptools              68.2.2
six                     1.16.0
sounddevice             0.4.6
wheel                   0.41.2

脚本:

MediaPipe 模块中用于姿势估计的默认模型mp.solutions.pose称为BlazePose。 BlazePose 能够实时检测单人和多人的 33 个身体标志。它的设计轻巧,同时仍提供高精度,这使其能够跨不同平台(包括移动和桌面)在设备上高效运行。

import os
import cv2
import mediapipe as mp




input_video_path = '/Users/prajendr/Downloads/test_data.mp4'
mediapipe_outdir = '/Users/prajendr/leaddatascientist/data/mediapipe_output/'
output_video_path = mediapipe_outdir + 'video.mp4'


if not os.path.exists(mediapipe_outdir):
    os.makedirs(mediapipe_outdir)


# Initialize MediaPipe Pose.
mp_pose = mp.solutions.pose
pose = mp_pose.Pose()


# Initialize MediaPipe drawing module for annotations.
mp_drawing = mp.solutions.drawing_utils




# Open the local video file.
cap = cv2.VideoCapture(input_video_path)


# Get video properties for output file.
frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = int(cap.get(cv2.CAP_PROP_FPS))


# Define the codec and create VideoWriter object to save the output video.
out = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*'mp4v'), fps, (frame_width, frame_height))


while cap.isOpened():
    success, image = cap.read()
    if not success:
        break


    # Convert the BGR image to RGB and process it with MediaPipe Pose.
    image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
    results = pose.process(image)


    # Draw the pose annotations on the image.
    image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
    if results.pose_landmarks:
        mp_drawing.draw_landmarks(image, results.pose_landmarks, mp_pose.POSE_CONNECTIONS)


    # Write the frame into the output file.
    out.write(image)


    # # Display the annotated image (optional, can be commented out).
    # cv2.imshow('MediaPipe Pose', image)


    # # Break the loop when 'q' is pressed.
    # if cv2.waitKey(1) & 0xFF == ord('q'):
    #     break


# Release resources.
cap.release()
out.release()
cv2.destroyAllWindows()

运行步骤:

  1. 设置视频路径:更改input_video_path本地视频文件的路径以及output_video_path要保存输出视频的位置。

  2. 视频捕获和写入器:脚本从输入视频中读取帧并初始化一个cv2.VideoWriter对象以将处理后的帧写入输出视频。

  3. 处理每一帧:对于每一帧,将其转换为 RGB,使用 MediaPipe Pose 进行处理,然后绘制姿势地标。

  4. 保存输出:每个带注释的帧都会写入输出视频文件。

  5. 显示和退出:处理后的帧显示在窗口中。按“q”提前退出。此步骤是可选的,如果不需要,可以删除。

  6. 清理:释放视频捕获和写入对象,并销毁所有 OpenCV 窗口。

·  END  ·

HAPPY LIFE

4d6c9b8b33ff7366ed9e2a419ac7fe11.png

本文仅供学习交流使用,如有侵权请联系作者删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/478060.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

产品经理杂谈

像游戏一样设计联赛 1、通过互联网规模化,然后分析数据,哪里好,哪里不好,大家都喜欢你的产品了,然后反哺更大规模 2、产品分类 toC 工具 内容 游戏 社交 电商 交易 toB 内部办公类 – 提高企业内部效率,…

力扣热门算法题 52. N 皇后 II,53. 最大子数组和,54. 螺旋矩阵

52. N 皇后 II,53. 最大子数组和,54. 螺旋矩阵,每题做详细思路梳理,配套Python&Java双语代码, 2024.03.20 可通过leetcode所有测试用例。 目录 52. N 皇后 II 解题思路 完整代码 Python Java 53. 最大子数组…

TS + Vue3 elementUI 表格列表中如何方便的标识不同类型的内容,颜色区分 enum

TS Vue3 elementUI 表格列表中如何方便的标识不同类型的内容,颜色区分 enum 本文内容为 TypeScript 一、基础知识 在展示列表的时候,列表中的某个数据可能是一个类别,比如: enum EnumOrderStatus{"未受理" 1,"…

MySQL Workbench连接云服务器内网数据库

在项目上遇到一个问题,生产环境是Centos,分配了两台云服务器,一台应用服务,一台数据库服务,应用服务与数据库服务采用内网连接。我作为开发和运维方,有权限直接访问应用服务,但是数据库服务器需…

C++知识点总览

1.输入输出流 在C中要想输入和输出 我们会经常用到 #include <stdio.h>在C中头文件的命名风格不用.h #include <iostream>using namespace std;为什么要用上面俩句话的解释&#xff08;自己写的博客&#xff09; c中 为什么要写&#xff1c;iostream&#xff1e;…

苹果计划与谷歌合作使用Gemini AI技术,提升iPhone功能,同时探索与OpenAI合作可能性

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

面试算法-73-二叉树的最小深度

题目 给定一个二叉树&#xff0c;找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明&#xff1a;叶子节点是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;2 解 class Solu…

人工智能时代的引领者:AI提示工程激发大语言模型的无限潜能

文章目录 一、AI提示工程的概念与定义二、AI提示工程的应用领域三、AI提示工程的技术创新与突破四、AI提示工程的未来发展趋势《AI提示工程实战&#xff1a;从零开始利用提示工程学习应用大语言模型》亮点内容简介作者简介目录 一、AI提示工程的概念与定义 在当今日新月异的科…

智能新纪元:AI大模型的奥秘与未来

目录 AI大模型学习 数学基础和编程能力 特定领域的业务理解 模型结构和算法的优化 为人类生活和工作带来的便利 AI大模型背后的技术原理 AI大模型学习的理论基础 1. 统计学习理论 2. 优化理论 3. 神经网络和深度学习 4. 表示学习 5. 迁移学习和微调 6. 机器学习的…

[数据集][目标检测]高质量铁路轨道缺陷检测数据集VOC+YOLO格式1050张6类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;1050 标注数量(xml文件个数)&#xff1a;1050 标注数量(txt文件个数)&#xff1a;1050 标注…

Spring Web MVC入门(6)

应用分层 在开发的过程中, 我们会发现, 程序的代码有时会很"杂乱", 如果后面的项目更大了, 那就会更加地杂乱无章(文件乱, 代码内容乱). 也基于此, 接下来让我们来学习一下应用分层. 也类似于公司的组织架构 公司初创阶段, 一个人身兼数职, 既做财务, 又做人事,还有…

【C++】stringstream类 最全超详细解析(什么是stringstream? stringstrem有哪些作用? 如何在算法中应用?)

目录 一、前言 二、stringstream 是什么 &#xff1f; 三、stringstream 的用法 ✨构造函数 ✨输出字符串 ✨两种构造函数带来的不同 ✨修改、清空 stringstream 内容 四、stringsteam 的用途 ✨ 利用 stringstream 去除字符串空格 ✨ 利用 stringstream 指定字符分割字符…

【RPG Maker MV 仿新仙剑 战斗场景UI (六)】

RPG Maker MV 仿新仙剑 战斗场景UI 六 法术战斗窗口代码仿新仙剑效果 法术战斗窗口 这次来水点内容 由于之前已经做过了仿新仙剑的法术及物品窗口因此本次两篇内容&#xff0c;就来水点内容&#xff01;&#xff01;&#xff01; 由于帮助窗口之前已经做过&#xff0c;因此直接…

课程思政元素收集遴选系统|基于JSP技术+ Mysql+Java+ B/S结构的课程思政元素收集遴选系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;ssm&#xff0c;springboot的平台设计与实现项目系统开发资源&#xff08;可…

CVPR 2024 | 长时舞蹈生成:数秒钟可生成极长的3D舞蹈

论文题目&#xff1a; Transparent Image Layer Diffusion using Latent Transparency 论文链接&#xff1a; https://arxiv.org/abs/2402.17113 代码仓库&#xff1a; GitHub - layerdiffusion/LayerDiffuse: Transparent Image Layer Diffusion using Latent Transparency 目…

PR无法在指定轨道上粘贴

在Adobe Premier Pro 2022中&#xff0c;按照视频教程复制(Ctrl C)、粘贴(Ctrl V)一段视频素材时&#xff0c;不能粘贴到点亮的轨道上&#xff0c;尝试了几次都不行。 最后找到了原因。 在快捷键设置中&#xff0c;发现CtrlV快捷键对应的是&#xff0c;粘贴到同一轨道&…

在线教育资源管理系统|基于JSP技术+ Mysql+Java的在线教育资源管理系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;ssm&#xff0c;springboot的平台设计与实现项目系统开发资源&#xff08;可…

一文了解AI长文本工具:Kimi Chat;与ChatGPT比较对比

一文了解AI长文本工具&#xff1a;Kimi Chat&#xff1b;与ChatGPT比较对比 在人工智能领域&#xff0c;ChatGPT、Claude2.1和Kimi Chat都是备受关注的大型模型。它们在文本生成、理解和处理方面展现了强大的能力。本文将深入探讨这三个工具的核心功能、优劣势以及适用场景&am…

人工智能驱动的对话背后的魔力

未来交流革命&#xff1a;了解对话式AI的关键优势 在不断发展的技术世界中&#xff0c;人工智能驱动的对话处于创新的前沿&#xff0c;改变了企业与客户互动和管理关系的方式。 这篇博文深入探讨了对话式人工智能的迷人世界&#xff0c;探讨了其当前的趋势、应用程序以及它在重…

聚焦“新质职校“发展,企业力量赋新能

聚焦"新质职校"发展 一、什么是“新质生产力” 新质生产力自2023年9月被首次提出后&#xff0c;便成为经济热词。在最近的全国“两会”中&#xff0c;新质生产力这一议题引起了广泛关注。新质生产力&#xff0c;作为对传统生产力概念的全面升级&#xff0c;是对当前…