Spaces:
Running
Running
import cv2 | |
joint_pairs = [[0, 1], [1, 3], [0, 2], [2, 4], | |
[5, 6], [5, 7], [7, 9], [6, 8], [8, 10], | |
[5, 11], [6, 12], [11, 12], | |
[11, 13], [12, 14], [13, 15], [14, 16]] | |
colors = [[255, 0, 0], [255, 85, 0], [255, 170, 0], [255, 255, 0], [170, 255, 0], [85, 255, 0], [0, 255, 0], \ | |
[0, 255, 85], [0, 255, 170], [0, 255, 255], [0, 170, 255], [0, 85, 255], [0, 0, 255], [85, 0, 255], \ | |
[170, 0, 255], [255, 0, 255], [255, 85, 255]] | |
def plot_keypoint(image, keypoints, keypoint_thresh=0.1): | |
confidence = keypoints[:, :, 2:] | |
coordinates = keypoints[:, :, :2] | |
joint_visible = confidence[:, :, 0] > keypoint_thresh | |
# ๆ็น | |
for people in keypoints: | |
for i in range(len(people)): | |
x, y, p = people[i] | |
if p < 0.1: | |
continue | |
x = int(x) | |
y = int(y) | |
cv2.circle(image, (x, y), 4, colors[i], thickness=-1) | |
for i in range(coordinates.shape[0]): | |
pts = coordinates[i] | |
for color_i, jp in zip(colors, joint_pairs): | |
if joint_visible[i, jp[0]] and joint_visible[i, jp[1]]: | |
pt0 = pts[jp, 0]; | |
pt1 = pts[jp, 1] | |
pt0_0, pt0_1, pt1_0, pt1_1 = int(pt0[0]), int(pt0[1]), int(pt1[0]), int(pt1[1]) | |
cv2.line(image, (pt0_0, pt1_0), (pt0_1, pt1_1), color_i, 2) | |
return image | |
# convert openpose keypoints(25) format to coco keypoints(17) format | |
def convert(op_kpts): | |
''' | |
0-16 map to 0,16,15,18,17,5,2,6,3,7,4,12,9,13,10,14,11 | |
''' | |
coco_kpts = [] | |
for i, j in enumerate([0, 16, 15, 18, 17, 5, 2, 6, 3, 7, 4, 12, 9, 13, 10, 14, 11]): | |
score = op_kpts[j][-1] | |
# if eye, ear keypoints score is lower, map it to mouth | |
if score < 0.2 and j in [15, 16, 17, 18]: | |
coco_kpts.append(op_kpts[0]) | |
else: | |
coco_kpts.append(op_kpts[j]) | |
return coco_kpts | |
# convert openpose keypoints(25) format to keypoints(18) format | |
def convert_18(op_kpts): | |
coco_kpts = [] | |
for i, j in enumerate(range(0, 18)): | |
if i < 8: | |
coco_kpts.append(op_kpts[j]) | |
else: | |
coco_kpts.append(op_kpts[j + 1]) | |
return coco_kpts | |