当前位置: 首页 > news >正文

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

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.jsqmd.com/news/22591/

相关文章:

  • 2025 年 10 月商用厨房设备,酒店厨房设备,大型厨房设备厂家最新推荐,聚焦高端定制需求与全案交付能力
  • zr模拟赛day8T2
  • 实用指南:Android 常见界面布局详解
  • 251026
  • 2025 年 10 月食堂厨房设备厂家最新推荐,聚焦资质、案例、售后的食堂场景深度解读
  • Android下加载libUnreal.so文件
  • 2025 年 10 月不锈钢厨房设备厂家最新推荐,产能、专利、环保三维数据透视
  • DINO版本进化
  • 2025 年 10 月餐饮厨房设备厂家最新推荐,实力品牌深度解析采购无忧之选!
  • sometime some time sometimes
  • 基于深度学习神经网络协同过滤模型(NCF)的视频推荐体系
  • 关于容斥原理
  • 可变字符串
  • 给安卓设置背景色的时候保持默认按钮样式(关于使用setBackgroundColor导致丢失默认按钮样式的问题)
  • 分片上传与断点续传实现详解
  • 欧拉定理
  • Kanass入门到实战(6) - 如何进行缺陷管理 - 指南
  • 手把手在 Linux 上安装 Docker 与 Docker Compose(包含 Ubuntu、CentOS 等 11 个发行版)
  • 2025 年 10 月展示柜厂家最新推荐,精准检测与稳定性能深度解析!
  • 数据处理方法汇总
  • 2025 年 10 月展示柜厂家最新推荐,技术实力与市场口碑深度解析!
  • 一些疑问
  • 2025 年 10 月外墙涂料厂家最新推荐,高性能与可靠性兼具的优质品牌
  • 2025 年 10 月外墙涂料厂家最新推荐,聚焦高端定制需求与全案交付能力
  • 深度神经网络 —— 使用RNN循环神经网络进行手写数字识别分类
  • 2025年10月长白山亲子酒店推荐榜:四季主题与温泉度假对比排行
  • 2025年10月益生菌品牌推荐榜:全维度对比与榜单解读
  • 2025年10月工装设计公司推荐榜:全国服务力对比评测
  • 2025 年 10 月外墙涂料厂家最新推荐,精准检测与稳定性能深度解析
  • 2025年10月美容仪品牌推荐:无创无痛对比评测榜