-
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 样式绘制的图像
- 参数2 左手关键点
- 参数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()
动作识别分析
- 准备数据(标准动作/标签)
- 录制视频,某个动作的视频帧较多(50帧),抽取出(5帧)作为标准的动作
- 视频保存一帧一帧图像 OpenCV
- 间隔时间保存
- 根据标签提取特征(向量vector)
- 保存提取出来的特征(db_feats)
- 当前的动作(图像/某帧)提取特征(feat)
- 当前的feat和已存储的db_feats进行比较
- 范式/距离
- 余弦定理 v1和v2作比较 cos 0-1 (1为最相似)
- 模块分析
- 视频采集 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
-
相关阅读:
如何在Linux服务器上部署Vue项目
【论文精读3】CasMVSNet
java-php-net-python-篮球网站文献综述计算机毕业设计程序
【C++】构造函数与析构函数概念简介 ( 构造函数和析构函数引入 | 构造函数定义与调用 | 析构函数定义与调用 | 代码示例 )
7.CF438D The Child and Sequence 线段树维护区间取模
day50| ● 739. 每日温度 ● 496.下一个更大元素 I
希尔排序(C++实现)
MySql 组合索引的使用
ZYNQ之FPGA学习----Vivado功能仿真
Spring Cloud Stream绑定器架构解析与开发
-
原文地址:https://blog.csdn.net/weixin_44240478/article/details/136378878