基于MediaPipe的手部特征点识别

news2024/11/15 21:22:44

基于MediaPipe的手部特征点识别


MediaPipe简介

MediaPipe Solutions 提供了一套库和工具,可以在安卓或者windows应用中快速应用人工智能 (AI) 和机器学习 (ML) 技术。

MediaPipe 手部地标任务可检测图片中手部的特征点。识别效果如下

在这里插入图片描述

环境配置
python -m pip install mediapipe
运行代码

import mediapipe as mp
from mediapipe.tasks import python

BaseOptions = mp.tasks.BaseOptions
HandLandmarker = mp.tasks.vision.HandLandmarker
HandLandmarkerOptions = mp.tasks.vision.HandLandmarkerOptions
VisionRunningMode = mp.tasks.vision.RunningMode

# 加载模型
options = HandLandmarkerOptions(
    base_options=BaseOptions(model_asset_path='model/hand_landmarker.task'),
    running_mode=VisionRunningMode.IMAGE)
with HandLandmarker.create_from_options(options) as landmarker:
    mp_image = mp.Image.create_from_file('./image/a.jpg')

    # 检测图片
    hand_landmarker_result = landmarker.detect(mp_image)
    # 输出手的关键点
    print(hand_landmarker_result)

输出结果

HandLandmarkerResult(handedness=[[Category(index=1, score=0.9459662437438965, display_name='Left', category_name='Left')]], hand_landmarks=[[NormalizedLandmark(x=0.5290346741676331, y=0.8187840580940247, z=3.174700680119713e-07, visibility=0.0, presence=0.0), NormalizedLandmark(x=0.4484105110168457, y=0.7732243537902832, z=-0.03075455315411091, visibility=0.0, presence=0.0), NormalizedLandmark(x=0.3810454308986664, y=0.6866939067840576, z=-0.052056632936000824, visibility=0.0, presence=0.0), NormalizedLandmark(x=0.33181697130203247, y=0.6147985458374023, z=-0.07278180122375488, visibility=0.0, presence=0.0), NormalizedLandmark(x=0.28900274634361267, y=0.560761034488678, z=-0.09389756619930267, visibility=0.0, presence=0.0), NormalizedLandmark(x=0.43227246403694153, y=0.4703798294067383, z=-0.029644589871168137, visibility=0.0, presence=0.0), NormalizedLandmark(x=0.39301061630249023, y=0.33941853046417236, z=-0.05450108274817467, visibility=0.0, presence=0.0), NormalizedLandmark(x=0.3721613883972168, y=0.2534501552581787, z=-0.07634947448968887, visibility=0.0, presence=0.0), NormalizedLandmark(x=0.35551917552948, y=0.17865553498268127, z=-0.09304636716842651, visibility=0.0, presence=0.0), NormalizedLandmark(x=0.4823477864265442, y=0.43757355213165283, z=-0.03536772355437279, visibility=0.0, presence=0.0), NormalizedLandmark(x=0.47116559743881226, y=0.2744345963001251, z=-0.055556535720825195, visibility=0.0, presence=0.0), NormalizedLandmark(x=0.4666796326637268, y=0.17104032635688782, z=-0.07358471304178238, visibility=0.0, presence=0.0), NormalizedLandmark(x=0.46402132511138916, y=0.08638948202133179, z=-0.08801455050706863, visibility=0.0, presence=0.0), NormalizedLandmark(x=0.53156578540802, y=0.4503312110900879, z=-0.04591694474220276, visibility=0.0, presence=0.0), NormalizedLandmark(x=0.5318034291267395, y=0.29948270320892334, z=-0.0690978467464447, visibility=0.0, presence=0.0), NormalizedLandmark(x=0.5335848927497864, y=0.20017921924591064, z=-0.09021823108196259, visibility=0.0, presence=0.0), NormalizedLandmark(x=0.5348951816558838, y=0.1156383752822876, z=-0.10539528727531433, visibility=0.0, presence=0.0), NormalizedLandmark(x=0.5789802074432373, y=0.4953954815864563, z=-0.059340327978134155, visibility=0.0, presence=0.0), NormalizedLandmark(x=0.6133036613464355, y=0.3942757844924927, z=-0.07918249815702438, visibility=0.0, presence=0.0), NormalizedLandmark(x=0.638502836227417, y=0.3260626494884491, z=-0.092025525867939, visibility=0.0, presence=0.0), NormalizedLandmark(x=0.6581178903579712, y=0.2595255970954895, z=-0.10176999866962433, visibility=0.0, presence=0.0)]], hand_world_landmarks=[[Landmark(x=0.012887902557849884, y=0.08369775116443634, z=0.02169019542634487, visibility=0.0, presence=0.0), Landmark(x=-0.01810395158827305, y=0.06716234982013702, z=0.005550411995500326, visibility=0.0, presence=0.0), Landmark(x=-0.03653212636709213, y=0.05187749117612839, z=-0.0053679971024394035, visibility=0.0, presence=0.0), Landmark(x=-0.0606301873922348, y=0.03301876038312912, z=-0.01467543002218008, visibility=0.0, presence=0.0), Landmark(x=-0.08052900433540344, y=0.011681696400046349, z=-0.020814580842852592, visibility=0.0, presence=0.0), Landmark(x=-0.028123382478952408, y=0.0011320854537189007, z=0.0022898740135133266, visibility=0.0, presence=0.0), Landmark(x=-0.03646745905280113, y=-0.024606864899396896, z=-0.007287601940333843, visibility=0.0, presence=0.0), Landmark(x=-0.04623487591743469, y=-0.045148856937885284, z=-0.01855948381125927, visibility=0.0, presence=0.0), Landmark(x=-0.05742239952087402, y=-0.05820189416408539, z=-0.04638492316007614, visibility=0.0, presence=0.0), Landmark(x=-0.005197027698159218, y=-0.005314752459526062, z=0.005884634796530008, visibility=0.0, presence=0.0), Landmark(x=-0.0045807939022779465, y=-0.043435558676719666, z=-0.005011055618524551, visibility=0.0, presence=0.0), Landmark(x=-0.013069529086351395, y=-0.06594625860452652, z=-0.025721462443470955, visibility=0.0, presence=0.0), Landmark(x=-0.01720215007662773, y=-0.08636726438999176, z=-0.047411683946847916, visibility=0.0, presence=0.0), Landmark(x=0.01882200874388218, y=-0.0035621775314211845, z=-0.0010493824956938624, visibility=0.0, presence=0.0), Landmark(x=0.0158691443502903, y=-0.03264676779508591, z=-0.01168868038803339, visibility=0.0, presence=0.0), Landmark(x=0.01356110256165266, y=-0.05471034720540047, z=-0.029167117550969124, visibility=0.0, presence=0.0), Landmark(x=0.010571113787591457, y=-0.07351168990135193, z=-0.04976153373718262, visibility=0.0, presence=0.0), Landmark(x=0.029267607256770134, y=0.011042852886021137, z=-0.004063688218593597, visibility=0.0, presence=0.0), Landmark(x=0.044259436428546906, y=-0.008888565935194492, z=-0.00678011542186141, visibility=0.0, presence=0.0), Landmark(x=0.0552644208073616, y=-0.029306873679161072, z=-0.016462478786706924, visibility=0.0, presence=0.0), Landmark(x=0.05928361415863037, y=-0.042335450649261475, z=-0.02878321148455143, visibility=0.0, presence=0.0)]])

解码对应点

根据图片自行解码图片数据

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构】手把手教你单链表(c语言)(附源码)

🌟🌟作者主页:ephemerals__ 🌟🌟所属专栏:数据结构 目录 前言 1.单链表的概念与结构 2.单链表的结构定义 3.单链表的实现 3.1 单链表的方法声明 3.2 单链表方法实现 3.2.1 打印链表 3.2.2 创建新…

一文详解 JuiceFS 读性能:预读、预取、缓存、FUSE 和对象存储

在高性能计算场景中,往往采用全闪存架构和内核态并行文件系统,以满足性能要求。随着数据规模的增加和分布式系统集群规模的增加,全闪存的高成本和内核客户端的运维复杂性成为主要挑战。 JuiceFS,是一款全用户态的云原生分布式文件…

[240726] Mistral AI 发布新一代旗舰模型 | Node.js 合并 TypeScript 文件执行提案

目录 Mistral AI 发布新一代旗舰模型:Mistral Large 2Node.js 合并 TypeScript 文件执行提案:--experimental-strip-types Mistral AI 发布新一代旗舰模型:Mistral Large 2 Mistral AI 宣布推出新一代旗舰模型 Mistral Large 2,该…

ubuntu20.04 安装vscode 并且配置环境

目录 1.下载 2.安装 3.装插件,配置环境 1.下载 打开浏览器,进入vscode主页 Visual Studio Code - Code Editing. Redefined 2.安装 双击安装包 安装 安装完成后,我们打开vscode 3.装插件,配置环境 打开后我们 ctrlj 打开终…

操作系统的底层管理

一、冯诺依曼体系结构 我们常见的计算机,如笔记本和我们不常见的计算机,如服务器大多都遵循冯诺依曼体系结构。 根据冯诺依曼结构 ,我们可以了解到计算机是由一个个硬件组成,共分为三部分:输入、内存/CPU和输出。 如果…

【odoo17 | Owl】前端js钩子调用列表选择视图

概要 在我们选择多对一或者多对多字段的时候,经常看到可以弹出列表弹窗让人一目了然的效果,效果如下: 那么,这种效果是odoo本身封装好的组件,我们在平时的前端界面开发的时候,既不是后端视图的情况下&#…

title可修改点击展示input

<spanv-if"isEdit"click.stop"headerClick(activityForm.activityName)"><span>課程名稱{{ activityForm.activityName}}</span><el-buttonlinktype"primary"style"color: #1d2129"click"editCourseName&qu…

STM32存储左右互搏 QSPI总线读写64 Mbit容量SRAM VTI7064

STM32存储左右互搏 QSPI总线读写64 Mbit容量SRAM VTI7064 QSPI&#xff08;Quad-SPI&#xff09;设备有两种常见操作模式&#xff0c;一种QSPI设备上电后直接进入QSPI模式&#xff0c;操作时命令&#xff0c;地址和数据都是多线传输。另一种QSPI设备上电后进入常规SPI操作模式…

谷粒商城实战笔记-踩坑-跨域问题

一&#xff0c;When allowCredentials is true, allowedOrigins cannot contain the special value “*” since that cannot be set on the “Access-Control-Allow-Origin” response header. To allow credentials to a set of origins, list them explicitly or consider u…

shell-awk文本处理工具

1、awk概述 AWK 是一种处理文本文件的语言&#xff0c;是一个强大的文本分析工具。 它是专门为文本处理设计的编程语言&#xff0c;也是行处理软件&#xff0c;通常用于扫描、过滤、统计汇总工作 数据可以来自标准输入也可以是管道或文件 在 linux 上常用的是 gawk,awk …

PyTorch+AlexNet代码实训

参考文章&#xff1a;https://blog.csdn.net/red_stone1/article/details/122974771 数据集&#xff1a; 打标签&#xff1a; import os# os.path.join: 每个参数都是一个路径段&#xff0c;将它们连接起来形成有效的路径名。 train_txt_path os.path.join("data"…

Bazaar v1.4.3 任意文件读取漏洞复现(CVE-2024-40348)

0x01 产品简介 Bazarr是Sonarr和Radarr的配套应用程序&#xff0c;可根据您的要求管理和下载字幕。 0x02 漏洞概述 Bazarr存在任意文件读取漏洞&#xff0c;该漏洞是由于Bazaar v1.4.3的组件/api/swaggerui/static中存在一个问题&#xff0c;允许未经身份验证的攻击者可利用…

硅纪元AI应用推荐 | 豆包整容成了浏览器,让你的电脑秒变AI PC

“硅纪元AI应用推荐”栏目&#xff0c;为您精选最新、最实用的人工智能应用&#xff0c;无论您是AI发烧友还是新手&#xff0c;都能在这里找到提升生活和工作的利器。与我们一起探索AI的无限可能&#xff0c;开启智慧新时代&#xff01; 亲爱的技术宅们、办公高手们&#xff0c…

Tomcat项目本地部署

今天来分享一下如何于本机上在不适用idea等辅助工具的前提下&#xff0c;部署多个tomcat的web项目 我这里以我最近写的SSM项目哈米音乐为例&#xff0c;简单介绍一下项目的大致组成&#xff1a; 首先&#xff0c;项目分为4个模块&#xff0c;如下图所示&#xff1a; 其中&…

SQL 语句中的字符串有单引号导致报错的解决

1.问题 SQL 语句执行对象中&#xff0c;本内容的字符串内含有单引号导致查询或插入数据库报错&#xff0c; 例如 str 关键字 AND 附近有语法错误 2.解决 字符串中的 ’ → 替换 ”&#xff0c;则查询语句成功&#xff0c;故程式中要备注替换 单引号。

无法解析插件 org.apache.maven.plugins:maven-war-plugin:3.2.3(已解决)

文章目录 1、问题出现的背景2、解决方法 1、问题出现的背景 最开始我想把springboot项目转为javaweb项目&#xff0c;然后我点击下面这个插件 就转为javaweb项目了&#xff0c;但是我后悔了&#xff0c;想要还原成springboot项目&#xff0c;点开项目结构关于web的都移除了&am…

运放-增益带宽积-datasheet参数

在运放开环增益频率曲线中&#xff0c;在一定频率范围内&#xff0c;运放的开环增益与对应的频率乘积为常数&#xff1a;增益带宽积&#xff08;Gain Bandwidth Product&#xff0c; GBP 或者 GBW&#xff09;&#xff0c;即开环增益*频率增益带宽积。 这里有一个误区&#xf…

CompletableFuture异步线程不执行,卡死问题

1、生产上突然发现大量业务数据没执行&#xff0c;通过日志分析有段代码没执行。 2、分析原因可能是异步线程没执行导致&#xff0c;直接上代码场景 3、异步线程调用远程外部接口 超时或多次异常&#xff0c;导致服务无法再开启异步线程&#xff0c;同时代码中其他用到异步线程…

人人可学的AI与高科技普及视频课,零基础,通俗易懂,深入浅出

课程内容&#xff1a; 1 第0课:开课词&#xff0c;欢迎词 ev.mp4 2 第1课:我们为什么要学习Al ev.mp4 3 第2课:AI算法模型的基本概念MOVev,mp4 4 第3课:什么是生成性Al ev,mp4 5 第4课:人工智能的三驾马车 ev.mp4 6 加餐附加课1-谷歌双子座Gemini ev,mp4 7 第5课:关于Al…

为什么idea建议使用“+”拼接字符串

今天在敲代码的时候&#xff0c;无意间看到这样一个提示&#xff1a; 英文不太好&#xff0c;先问问ChatGPT&#xff0c;这个啥意思&#xff1f; IDEA 提示你&#xff0c;可以将代码中的 StringBuilder 替换为简单的字符串连接方式。 提示信息中说明了使用 StringBuilder 进行…