• 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
  • 相关阅读:
    门店如何提高会员粘性
    【机器学习】机器学习创建算法第2篇:K-近邻算法【附代码文档】
    使用 Nginx 实现 HTTPS 网站设置
    redo log 和 binlog 的一些总结
    linux安装redis哨兵
    C++智能指针
    详解3dMax中渲染线框的两种简单方法
    【MySQL | 进阶篇】01、存储引擎
    码神之路项目总结(二)
    面了一个4年经验的测试工程师,自动化都不会也要15k,我真是醉了...
  • 原文地址:https://blog.csdn.net/weixin_44240478/article/details/136378878