在上述代码基础上绘制出人体关节
时间: 2024-12-14 14:19:27 浏览: 1
Visual C++源代码 39 如何绘制不规则连接线
在上述代码中,我们用OpenCV画出了人体的关键点,也就是关节部位。这是通过`cv2.circle()`函数实现的,它接受四个参数:要绘图的图片(frame)、关节的中心点坐标、半径以及颜色。这里我们选择了一个固定的半径10像素,并将关节的颜色设为红色。
在循环内,当`results.pose_landmarks`不为空时,我们访问每个关键点的位置,如左肩(`results.pose_landmarks.landmark[mp_holistic.PoseLandmark.LEFT_SHOULDER]`),并获取其`x`和`y`坐标。这些坐标用于创建一个圆心位置的`(x, y)`元组,然后传递给`cv2.circle()`函数来绘制圈。
例如,这部分代码:
```python
left_ankle = results.pose_landmarks.landmark[mp_holistic.PoseLandmark.LEFT_SHOULDER].x, results.pose_landmarks.landmark[mp_holistic.PoseLandmark.LEFT_SHOULDER].y
right_ankle = results.pose_landmarks.landmark[mp_holistic.PoseLandmark.RIGHT_SHOULDER].x, results.pose_landmarks.landmark[mp_holistic.PoseLandmark.RIGHT_SHOULDER].y
cv2.circle(frame, (int(left_ankle), int(left_ankle)), 10, (255, 0, 0), cv2.FILLED)
cv2.circle(frame, (int(right_ankle[0]), int(right_ankle)), 10, (255, 0, 0), cv2.FILLED)
```
这里的`LEFT_SHOULDER`和`RIGHT_SHOULDER`是Mediapipe定义的人体关键点名称,对应于左右肩膀。其他关键点还包括头部、手部、腿部等,可以根据需要更改这些索引。
阅读全文