-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathutils.py
67 lines (44 loc) · 2.16 KB
/
utils.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import cv2
from matplotlib.pyplot import draw
import numpy
def separate_regions(predicted_key_pts):
if isinstance(predicted_key_pts, numpy.ndarray):
jaw = predicted_key_pts[0:17]
right_eyebrow = predicted_key_pts[17:22]
right_eye = predicted_key_pts[36:42]
left_eyebrow = predicted_key_pts[22:27]
left_eye = predicted_key_pts[42:48]
nose = predicted_key_pts[27:36]
upper_lip = predicted_key_pts[49:55]
lower_lip = predicted_key_pts[55:60]
upper_lip_lower = predicted_key_pts[60:64]
lower_lip_upper = predicted_key_pts[64:68]
else:
predicted_key_pts = predicted_key_pts.view(-1,68,2)
jaw = predicted_key_pts[:,0:17]
right_eyebrow = predicted_key_pts[:,17:22]
right_eye = predicted_key_pts[:,36:42]
left_eyebrow = predicted_key_pts[:,22:27]
left_eye = predicted_key_pts[:,42:48]
nose = predicted_key_pts[:,27:36]
upper_lip = predicted_key_pts[:,49:55]
lower_lip = predicted_key_pts[:,55:60]
upper_lip_lower = predicted_key_pts[:,60:64]
lower_lip_upper = predicted_key_pts[:,64:68]
return [jaw, right_eyebrow, right_eye, left_eyebrow, left_eye, nose, upper_lip, upper_lip_lower, lower_lip_upper, lower_lip]
def draw_region(image, region, color):
for point in region:
cv2.circle(image, point.astype(numpy.int32), 5, color, -1)
def show_all_keypoints(image:numpy.ndarray, predicted_key_pts, gt_pts=[]):
"""Show image with predicted keypoints"""
jaw, right_eyebrow, right_eye, left_eyebrow, left_eye, nose, upper_lip, upper_lip_lower, lower_lip_upper, lower_lip = separate_regions(predicted_key_pts)
draw_region(image, jaw, (0,150,150))
draw_region(image, right_eyebrow, (0,230,25))
draw_region(image, right_eye, (0,230,25))
draw_region(image, left_eyebrow, (200,0,55))
draw_region(image, left_eye, (200,0,55))
draw_region(image, nose, (100,155,0))
draw_region(image, upper_lip, (100,0,155))
draw_region(image, upper_lip_lower, (100,0,155))
draw_region(image, lower_lip_upper, (155,0,100))
draw_region(image, lower_lip, (155,0,100))