手势检测(充满科技感) - 实践

news/2025/10/26 11:42:11/文章来源:https://www.cnblogs.com/wzzkaifa/p/19166619

mediapipe库

Mediapipe是google的一个开源项目,可以提供开源的、跨平台的常用机器学习(machine learning)方案。Mediapipe实际上是一个集成的机器学习视觉算法的工具库,包含了人脸检测、人脸关键点、手势识别、头像分割和姿态识别等各种模型。我们可以直接使用pip进行安装就好。

代码部分

初始化

import cv2
import mediapipe as mp
mp_drawing = mp.solutions.drawing_utils
mp_hands = mp.solutions.hands
hands = mp_hands.Hands(static_image_mode=False,max_num_hands=2,min_detection_confidence=0.75,min_tracking_confidence=0.75)

mp.solutions.drawing_utils是一个绘图模块,将识别到的手部关键点信息绘制道cv2图像中,mp.solutions.drawing_style定义了绘制的风格。
mp.solutions.hands是mediapipe中的手部识别模块,可以通过它调用手部识别的api,然后通过调用mp_hands.Hands初始化手部识别类。
mp_hands.Hands中的参数:
        1)static_image_mode=True适用于静态图片的手势识别,Flase适用于视频等动态识别,比较明显的区别是,若识别的手的数量超过了最大值,
True时识别的手会在多个手之间不停闪烁,而False时,超出的手不会识别,系统会自动跟踪之前已经识别过的手。默认值为False;
        2)max_num_hands用于指定识别手的最大数量。默认值为2;
        3)min_detection_confidence 表示最小检测信度,取值为[0.0,1.0]这个值约小越容易识别出手,用时越短,但是识别的准确度就越差。越大识别的越精准,
但是响应的时间也会增加。默认值为0.5;
        4)min_tracking_confience 表示最小的追踪可信度,越大手部追踪的越准确,相应的响应时间也就越长。默认值为0.5。

开始检测

cap = cv2.VideoCapture(0)
while True:flag = 0ret, frame = cap.read()h,w=frame.shape[:2]frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)# 因为摄像头是镜像的,所以将摄像头水平翻转# 不是镜像的可以不翻转frame = cv2.flip(frame, 1)results = hands.process(frame)frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)#    if results.multi_handedness:#        for hand_label in results.multi_handedness:#            print(hand_label)if results.multi_hand_landmarks:for hand_landmarks in results.multi_hand_landmarks:# print('hand_landmarks:', hand_landmarks)# 计算关键点的距离,用于判断手指是否伸直for i in range(len(hand_landmarks.landmark)):x = hand_landmarks.landmark[i].xy = hand_landmarks.landmark[i].yz = hand_landmarks.landmark[i].z# print(x,y,z)cv2.putText(frame, str(i), (int(x*w),int(y*h)), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 255, 0),2)# 关键点可视化mp_drawing.draw_landmarks(frame,hand_landmarks,mp_hands.HAND_CONNECTIONS)cv2.imshow('MediaPipe Hands', frame)if cv2.waitKey(1) & 0xFF == 27:break
cap.release()
cv2.destroyAllWindows()

重要部分就是results = hands.process(frame),这里可以获得关键点

results.multi_hand_landmarks判断是否检测到手。

for hand_landmarks in results.multi_hand_landmarks:对每一个手进行检测。

然后对其中每个点进行循环,使用mp_drawing.draw_landmarks(frame,
                                      hand_landmarks,
                                      mp_hands.HAND_CONNECTIONS)

                      进行画出,并且在画的时候找到了那个坐标,并写出来了那个位置的索引(没啥用)

效果展示

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

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

相关文章

2025 年 10 月商用厨房设备,酒店厨房设备,大型厨房设备厂家最新推荐,聚焦高端定制需求与全案交付能力

商用、酒店及大型厨房设备需适配多元化场景需求(如酒店宴会厨房、连锁餐饮中央厨房、大型企业食堂),高端定制能力与全案交付水平直接决定厨房运营效率与体验。据中国旅游饭店业协会 2025 年 10 月发布的《酒店厨房设…

zr模拟赛day8T2

正变换无法确定朝大还是朝小变换 考虑逆变换,因为逆变换只能是大减小 发现变成了辗转相减的形式 考虑优化成辗转相除 发现可以记录辗转相除中的每个关键点 记录成一个三元组 然后就发现可以二分查询了 有一个小细节是…

实用指南:Android 常见界面布局详解

实用指南:Android 常见界面布局详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monac…

251026

目录JT-JY10T4S1-1JT-JY10T4S1-2 JT-JY10T4S1-1ThDks, good morning, is that Mr.ThDk? Speaking, how can i help? I have got quite few things which need painting and fixing in the flat, and i wonder whethe…

2025 年 10 月食堂厨房设备厂家最新推荐,聚焦资质、案例、售后的食堂场景深度解读

食堂厨房设备直接关系到师生、职工的饮食安全与就餐效率,其资质合规性、食堂场景适配性与售后保障能力尤为关键。据中国教育后勤协会 2025 年 10 月发布的《校园食堂设备质量报告》显示,26% 的食堂设备因资质不全存在…

Android下加载libUnreal.so文件

Android下加载libUnreal.so文件Android 下动态加载so库 具体有两种方式: (1)调用 load(String filename) 方法System.load("/data/data/com.example.mygame/files/libUnreal.so"); // 传递进去的是全路径…

2025 年 10 月不锈钢厨房设备厂家最新推荐,产能、专利、环保三维数据透视

不锈钢厨房设备凭借耐用、易清洁的特性,成为餐饮、酒店、食堂等场景的核心选择,但其产能稳定性、技术专利储备与环保合规性,直接影响采购方的供应保障与长期运营成本。据中国五金制品协会不锈钢制品分会 2025 年 10…

DINO版本进化

1.蒸馏 KD 与 自蒸馏 SD普通蒸馏,是有监督(软标签),老师是外部预训练的大模型自蒸馏,无监督,老师是 自己的历史版本EMA2.EMA机制有一个问题,如果学生和老师输出的内容是一致的,那学生什么也学不到。所以老师网…

2025 年 10 月餐饮厨房设备厂家最新推荐,实力品牌深度解析采购无忧之选!

餐饮厨房设备作为餐饮企业运营的核心基础设施,其质量与服务直接关系到食品安全、运营效率及成本控制。据中国烹饪协会 2025 年 10 月发布的《餐饮行业设备采购白皮书》显示,近一年餐饮企业因设备质量问题产生的额外支…

sometime some time sometimes

sometime is an unspecified point in timesome time is a period/span of timesometimes is an adverb about frequency英语国家也有自己的 的地得

基于深度学习神经网络协同过滤模型(NCF)的视频推荐体系

基于深度学习神经网络协同过滤模型(NCF)的视频推荐体系pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&q…

关于容斥原理

简单的不说了,直接开题。 P1450 [HAOI2008] 硬币购物 题意 有 \(c1, c2, c3, c4\) 四种面值的硬币,询问多次,给你每个硬币最多有多少个,问凑出 \(S\) 面值的方案。 分析 考虑一个 \(f_i\) 是 i 号硬币不满足条件的…

可变字符串

可变字符串StringBuffer:可变长字符串,运行效率慢,线程安全StringBuilder:可变长字符串,运行效率吧快,线程不安全 package String; /*** StringBuffer和StrinBulider的使用* 和String的区别(1)比String效率高(…

给安卓设置背景色的时候保持默认按钮样式(关于使用setBackgroundColor导致丢失默认按钮样式的问题)

给安卓设置背景色的时候保持默认按钮样式(关于使用setBackgroundColor导致丢失默认按钮样式的问题)核心apiButton.setBackgroundTintList(ColorStateList);void initPatterns(LinearLayout PatternsRoot){for(int i=0;…

分片上传与断点续传实现详解

分片上传与断点续传实现详解 在现代Web应用中,用户经常需要上传大文件,如视频、压缩包等。传统的文件上传方式在面对大文件时容易出现超时、失败等问题,而且一旦上传中断就需要重新上传整个文件,浪费时间和带宽。为…

欧拉定理

欧拉定理 给定整数 \(a,m\),其中 \(\gcd(a,m)=1\),求证: \[a^{\phi(m)} \equiv 1 \pmod m \]其中 \(\phi(m)\) 是欧拉函数,表示 \(\le m\) 中与 \(m\) 互质的数的个数。 欧拉定理证明 考虑模 \(m\) 的一个简化剩余…

Kanass入门到实战(6) - 如何进行缺陷管理 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

手把手在 Linux 上安装 Docker 与 Docker Compose(包含 Ubuntu、CentOS 等 11 个发行版)

从零开始:按命令实操在 11 个主流 Linux 发行版(含 Ubuntu、CentOS、Debian 等)上安装 Docker 与 Docker Compose。支持 11 种主流发行版:OpenCloudOS、Anolis OS (龙蜥)、Alinux (阿里云)、Fedora、Rocky Linux、…

2025 年 10 月展示柜厂家最新推荐,精准检测与稳定性能深度解析!

展示柜的稳定性能直接关系到零售商家的日常运营效率与商品陈列效果,为助力商家筛选出经过精准检测、性能可靠的展示柜厂家,2025 年 10 月,中国商业设施协会联合国家轻工业产品质量监督检测中心,开展展示柜行业专项…

数据处理方法汇总

1.层次化 K-means (Hierarchical K-means)不直接把数据分成k个簇,第一层先分k1个簇,第二层每个大簇分为k2个小簇,以此类推,形成聚类树2.平衡采样对每类样本按比例采样3.检索式筛选数据用分类模型,找到数据池和种…