Mediapipe笔记:安装Mediapipe+手部检测+动作识别

Mediapipe

安装Mediapipe

  • 打开Anaconda prompt
  • 检查环境和python运行环境是否一致(默认base环境,不用切换)
  • 输入命令行pip install mediapipe==0.9.1.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

Mediapope完成手部关键点检测

手部检测

  • 创建对象(加载模型参数) mp.solutions.hands.Hands()
  • 图像通道更换(BGR --> RGB) cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
  • 获得手部标志 result = hand.process(frame_rgb)
  • 获得手部关键点 result.multi_hand_landmarks
  • 获得左手关键点 hand_landmarks = result.multi_hand_landmarks[0]
  • 绘制样式 mp.solutions.drawing_utils.draw_landmarks
    • 参数1 样式绘制的图像
      • 视频捕捉的图像 frame
    • 参数2 左手关键点
      • hand_landmarks
    • 参数3 连接点
      • cnn = mp.solutions.hands_connections.HAND_CONNECTIONS
    • 参数4 关键点样式
      • lm_style = mp.solutions.drawing_styles.DrawingSpec()
    • 参数5 连接线样式
      • cnn_style = mp.solutions.drawing_styles.DrawingSpec(color=(255, 0, 0))

视频捕捉

  • 初始化手部检测属性
    • self.hand = HandProcess()
  • 打开摄像头 cap = cv2.VideoCapture(0)
    • 0 表示打开本地摄像头
    • 1 2 3 外接摄像头
    • 路径/播放视频
  • 循环一帧一帧读取图像 while cap.isOpened():
    • 获得图像 retval, frame = cap.read()
    • 手部检测 self.hand.process(frame)
    • 显示图像 cv2.imshow(‘frame’, frame)
    • 等待显示 key = cv2.waitKey(25)
      • if key == ord(‘z’): break
  • 释放摄像头 cap.release()
  • 释放显示窗口 cv2.destroyAllWindows()

动作识别分析

  1. 准备数据(标准动作/标签)
    • 录制视频,某个动作的视频帧较多(50帧),抽取出(5帧)作为标准的动作
    • 视频保存一帧一帧图像 OpenCV
    • 间隔时间保存
  2. 根据标签提取特征(向量vector)
  3. 保存提取出来的特征(db_feats)
  4. 当前的动作(图像/某帧)提取特征(feat)
  5. 当前的feat和已存储的db_feats进行比较
    • 范式/距离
    • 余弦定理 v1和v2作比较 cos 0-1 (1为最相似)
  6. 模块分析
    • 视频采集 video_process
      • 循环一帧一帧读取图像 capture()
      • 继承修改 process() 用于 pose_rec 调用识别
    • 动作识别 pose_rec
      • 存放 frame_feat 对象
      • 调用 recognize() 进行识别,获得 cal_similarity() 预测动作
    • 提取图像特征 frame_feat
      • 获得关键点 get_pose_landmark
      • 获得图像特征 get_frame_feat
      • 加载标准数据库 load_db_feat
      • 相似度比较 cal_similarity
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

饭碗、碗碗香

感谢壮士的慷概解囊!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值