【MediaPipe】 AI视觉,人体姿态关键点实时跟踪,附python完整代码
一、导入必要的工具包:
1. opencv:通过`pip install opencvcontribpython`进行安装。
2. mediapipe:使用命令`pip install mediapipe`来安装。
或者在遇到user错误时,可通过`pip install mediapipe user`进行安装。
二、定义关键函数及其说明:
mediapipe.solutions.pose.Pose():用于姿势关键点检测。
static_image_mode: 默认为False,适用于视频流,检测并跟踪最显眼的人的姿势地标。若设为True,应用于每张输入图像的独立人像检测。
model_complexity: 默认为1,表示复杂度等级,选择更高值可增加地标精确度但牺牲速度,更低值则反而加快速度。
smooth_landmarks: 默认为True,用来平滑地标准备注释图像以减少抖动。
upper_body_only: 默认为False,若设为True,只检测上半身的地标。
enable_segmentation: 默认为False,如果开启,额外生成分割掩码。
smooth_segmentation: 默认为True,用于分割掩码的平滑处理。
min_detection_confidence: 默认为0.5,人形检测的最低置信度阈值。
min_tracking_confidence: 默认为0.5,地标跟踪的最低置信度阈值,解决跟踪失败后的状态。
返回: 包含“pose_landmarks”的命名元组对象。
三、图像处理与关键点绘制:
1. 使用`cv2.VideoCapture()`读取视频文件,注意文件路径避免中文以防止出现错误。
2. 访问每帧图像,利用循环不断提取。
3. 确保读取的视频格式转换为实现检测所需的RGB格式(通常先读为BGR):“cv2.COLOR_BGR2RGB”。
4. mediapipe.solutions.drawing_utils.draw_landmarks() 功能用来绘制关键点之间的连接线,提供更丰富直观的可视化结果。
四、关键点坐标保存与编辑:
引入代码对检索的关键点坐标进行保存,以数值的方式进行可视化(例如:
```markdown
lmlist = []
...
for index, lm in enumerate(results.pose_landmarks.landmark):
w, h, c = img.shape
cx, cy = int(lm.x w), int(lm.y h)
print(index, cx, cy)
lmlist.append((cx, cy)
```