如何获取openpose十八个关键点的坐标
时间: 2023-05-23 09:06:23 浏览: 971
要获取openpose十八个关键点的坐标,需要使用openpose库进行姿势估计。以下是使用Python和OpenCV库实现此操作的步骤:
1. 从OpenCV官网下载openpose模型,并使用OpenCV进行加载。
```
import cv2
net = cv2.dnn.readNetFromTensorflow('path-to-model.pb')
```
2. 通过OpenCV读取图像或视频,并将其输入openpose模型来检测人体姿态。
```
image = cv2.imread('path-to-image')
blob = cv2.dnn.blobFromImage(image, 1.0/255, (368, 368), (0, 0, 0), swapRB=False, crop=False)
net.setInput(blob)
out = net.forward()
```
3. 解析输出以获取关键点坐标。
```
H, W, _ = image.shape
points = []
for i in range(18):
probMap = out[0, i, :, :]
minVal, prob, minLoc, point = cv2.minMaxLoc(probMap)
x, y = int((W* point[0]) / out.shape[3]), int((H * point[1]) / out.shape[2])
if prob > threshold:
points.append((x, y))
else:
points.append(None)
```
其中,out是openpose模型的输出,是一个四维张量,第一个维度表示批次大小,第二个维度表示关键点数量,第三个维度和第四个维度表示特征图的高度和宽度。probMap是关键点概率图,minMaxLoc函数用于获取最大概率点的位置。x和y是映射到输入图像大小的坐标。threshold是一个阈值,如果对应的概率值低于该阈值,代表该关键点没有被检测出来,将其设置为None。最终,points列表包含了18个关键点的坐标。
阅读全文