基于MediaPipe的手部特征点识别

基于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)]])

解码对应点

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

在这里插入图片描述

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

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

相关文章

GRE VPN和MGRE VPN综合练习

GRE VPN和MGRE VPN综合练习 实验拓扑 实验要求 1、R5为ISP,只能进行IP地址配置,其所有地址均配为公有IP地址; 2、R1和R5间使用PPP的PAP认证,R5为主认证方; R2与R5之间使用ppp的CHAP认证,R5为主认证方; R3与R5之间使用HDLC封装;…

【vue3|第18期】Vue-Router路由的三种传参方式

日期:2024年7月17日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方,还望各位大佬不吝赐教,谢谢^ - ^ 1.01365 = 37.7834;0.99365 = 0.0255 1.02365 = 1377.408…

设计模式14-享元模式

设计模式14-享元模式 由来动机定义与结构代码推导特点享元模式的应用总结优点缺点使用享元模式的注意事项 由来动机 在很多应用中,可能会创建大量相似对象,例如在文字处理器中每个字符对象。在这些场景下,如果每个对象都独立存在&#xff0c…

「12月·长沙」第四届机器人、自动化与智能控制国际会议(ICRAIC 2024)

随着科技的飞速发展,智能机器人在当今社会的重要性愈发凸显。从制造业的自动化生产线,到医疗领域的手术机器人,再到家庭生活中的智能助手,机器人与人工智能的融合正在改变着我们的生产和生活方式。第四届机器人、自动化与智能控制…

如何通过smtp设置使ONLYOFFICE协作空间服务器可以发送注册邀请邮件

什么是ONLYOFFICE协作空间 ONLYOFFICE协作空间,是Ascensio System SIA公司出品的,基于Web的,开源的,跨平台的,在线文档编辑和协作的解决方案。在线Office包含了最基本的办公三件套:文档编辑器、幻灯片编辑…

鸿蒙 动态共享包HSP的创建和引用

1.什么是动态共享包HSP HSP(Harmony Shared Package)是动态共享包,可以包含代码、C库、资源和配置文件,通过HSP可以实现代码和资源的共享。HSP不支持独立发布,而是跟随其宿主应用的APP包一起发布,与宿主应…

vue3前端开发-小兔鲜项目-form表单的统一校验

vue3前端开发-小兔鲜项目-form表单的统一校验!实际上,为了安全起见,用户输入的表单信息,要满足我们的业务需求,参数类型等种种标准之后,才会允许用户向服务器发送登录请求。为此,有必要进行一次…

MySQL第四次作业

先创建库和表 处理表 1. 修改 student 表中年龄(sage)字段属性,数据类型由 int 改变为 smallint ALTER TABLE student MODIFY sage SMALLINT; 2. 为 Course 表中 Cno 课程号字段设置索引,并查看索引 ALTER TABLE course ADD INDEX index_cno (Cno); …

Electron 结合 Selenium + chromedriver 驱动服务实现浏览器多开

背景 在调研浏览器多开的过程中,electron 有自带的 browserview,webview,但是上面两个受制于 electron 内核版本限制,升级不够灵活,对新版的网页支持可能不及时,甚至不兼容,必须通过发布新的客…

【QAC】分布式部署下其他机器如何连接RLM

1、 文档目标 解决分布式部署下其他机器如何连接RLMLicense管理器。 2、 问题场景 分布式部署下QAC要在其他机器上单独运行扫描,必须先连接RLMLicense管理器,如何连接? 3、软硬件环境 1、软件版本:HelixQAC23.04 2、机器环境…

在图神经网络(GNN)上进行关系推理的新架构

开发能够学习推理的模型是一个众所周知的具有挑战性的问题,在这个领域中,使用图神经网络(GNNs)似乎是一个自然的选择。然而,以往关于使用GNNs进行推理的工作表明,当这些模型面对需要比训练时更长推理链的测…

驰骋低代码如何实现对实体的权限控制?

驰骋低代码平台通过一套精细的权限控制机制,实现了对实体(如车辆、学生、员工、固定资产等)的查询范围权限和操作权限的全面控制。这种权限控制不仅确保了数据的安全性和准确性,还提高了系统的灵活性和可定制性。以下是驰骋低代码…

移除链表中值为val的元素

203.移除链表元素 力扣题目链接 (opens new window) 题意:删除链表中等于给定值 val 的所有节点。 示例 1: 输入:head [1,2,6,3,4,5,6], val 6 输出:[1,2,3,4,5] 示例 2: 输入:head [], val 1 输出&…

WPF---Prism视图传参

Prism视图传参方式。 实际应用场景 点击tabitem中的列表数据,同步更新到ListStatic Region对应的界面。目前用两种方式实现了传参数据同步。 第一,事件聚合器(EventAggregator) 1. 定义事件 创建一个事件类,用于传…

go程序在windows服务中优雅开启和关闭

本篇主要是讲述一个go程序,如何在windows服务中优雅开启和关闭,废话不多说,开搞!!!   使用方式:go程序 net服务启动 Ⅰ 开篇不利 Windows go进程编译后,为一个.exe文件,直接执行即…

场站网约车管理的升级让人找车服务更智能

既然是“人找车”,那么如何让人车匹配更快、服务更高效?近日,沧穹科技郑重宣告已助力杭州东站完成P6停车场网约车智能化服务的全面革新升级,一个集高效运营、安全保障与便捷体验于一体的网约车服务典范正式落地。 沧穹科技首创将音频“室内北…

pytest使用

主要技术内容 1.pytest设计 接口测试 框架设想 common—公共的东西封装 1.request请求 2.Session 3.断言 4.Log 5.全局变量 6.shell命令 ❖ config---配置文件及读取 ❖ Log— ❖ payload—请求参数—*.yaml及读取 ❖ testcases—conftest.py; testcase1.py…….可…

Android RSA 加解密

文章目录 一、RSA简介二、RSA 原理介绍三、RSA 秘钥对生成1. 密钥对生成2. 获取公钥3. 获取私钥 四、PublicKey 和PrivateKey 的保存1. 获取公钥十六进制字符串1. 获取私钥十六进制字符串 五、PublicKey 和 PrivateKey 加载1. 加载公钥2. 加载私钥 六、 RSA加解密1. RSA 支持三…

【STM32】IIC学习笔记

学习IIC 前言一、基础知识GPIO_WriteBit 写入高低电平 二、放代码三、逐行细读总结 前言 最近沉迷手写笔记~ 尝试解读江科大的IIC程序,结合笔记更理解IIC 一、基础知识 GPIO_WriteBit 写入高低电平 二、放代码 这个是江科大的软件IIC的设置部分 #include "s…

{Spring Boot 原理篇} Spring Boot自动装配原理

SpringBootApplication 1,Spring Boot 应用启动,SpringBootApplication标注的类就是启动类,它去实现配置类中的Bean的自动装配 SpringBootApplication public class SpringbootRedis01Application {public static void main(String[] args)…