mirror of
https://github.com/iperov/DeepFaceLive.git
synced 2024-12-25 07:21:13 -08:00
1355 lines
51 KiB
Python
1355 lines
51 KiB
Python
from typing import Tuple
|
|
|
|
import cv2
|
|
import numpy as np
|
|
|
|
from .. import math as lib_math
|
|
from ..math import Affine2DMat, Affine2DUniMat
|
|
from .ELandmarks2D import ELandmarks2D
|
|
from .FRect import FRect
|
|
from .IState import IState
|
|
|
|
|
|
class FLandmarks2D(IState):
|
|
def __init__(self):
|
|
"""
|
|
Describes 2D face landmarks in uniform float coordinates
|
|
"""
|
|
self._type : ELandmarks2D = None
|
|
self._ulmrks : np.ndarray = None
|
|
|
|
def restore_state(self, state : dict):
|
|
self._type = IState._restore_enum(ELandmarks2D, state.get('_type', None))
|
|
self._ulmrks = IState._restore_np_array(state.get('_ulmrks', None))
|
|
|
|
def dump_state(self) -> dict:
|
|
return {'_type' : IState._dump_enum(self._type),
|
|
'_ulmrks' : IState._dump_np_array(self._ulmrks),
|
|
}
|
|
|
|
@staticmethod
|
|
def create( type : ELandmarks2D, ulmrks : np.ndarray):
|
|
"""
|
|
ulmrks np.ndarray (*,2|3)
|
|
"""
|
|
if not isinstance(type, ELandmarks2D):
|
|
raise ValueError('type must be ELandmarks2D')
|
|
|
|
ulmrks = np.float32(ulmrks)
|
|
if len(ulmrks.shape) != 2:
|
|
raise ValueError('ulmrks shape must have rank 2')
|
|
|
|
if ulmrks.shape[1] != 2:
|
|
raise ValueError('ulmrks dim must be == 2')
|
|
|
|
ulmrks_count = ulmrks.shape[0]
|
|
if type == ELandmarks2D.L5:
|
|
if ulmrks_count != 5:
|
|
raise ValueError('ulmrks_count must be == 5')
|
|
elif type == ELandmarks2D.L68:
|
|
if ulmrks_count != 68:
|
|
raise ValueError('ulmrks_count must be == 68')
|
|
elif type == ELandmarks2D.L106:
|
|
if ulmrks_count != 106:
|
|
raise ValueError('ulmrks_count must be == 106')
|
|
elif type == ELandmarks2D.L468:
|
|
if ulmrks_count != 468:
|
|
raise ValueError('ulmrks_count must be == 468')
|
|
|
|
face_ulmrks = FLandmarks2D()
|
|
face_ulmrks._type = type
|
|
face_ulmrks._ulmrks = ulmrks
|
|
return face_ulmrks
|
|
|
|
def get_type(self) -> ELandmarks2D: return self._type
|
|
def get_count(self) -> int: return self._ulmrks.shape[0]
|
|
|
|
def as_numpy(self, w_h = None):
|
|
"""
|
|
get landmarks as np.ndarray
|
|
|
|
w_h(None) provide (w,h) to scale uniform landmarks to exact size
|
|
"""
|
|
ulmrks = self._ulmrks.copy()
|
|
if w_h is not None:
|
|
ulmrks *= w_h
|
|
|
|
return ulmrks
|
|
|
|
def transform(self, mat, invert=False) -> 'FLandmarks2D':
|
|
"""
|
|
Tranforms FLandmarks2D using affine mat and returns new FLandmarks2D()
|
|
|
|
mat : np.ndarray
|
|
"""
|
|
|
|
if not isinstance(mat, np.ndarray):
|
|
raise ValueError('mat must be an instance of np.ndarray')
|
|
|
|
if invert:
|
|
mat = cv2.invertAffineTransform (mat)
|
|
|
|
ulmrks = self._ulmrks.copy()
|
|
ulmrks = np.expand_dims(ulmrks, axis=1)
|
|
ulmrks = cv2.transform(ulmrks, mat, ulmrks.shape).squeeze()
|
|
|
|
return FLandmarks2D.create(type=self._type, ulmrks=ulmrks)
|
|
|
|
def get_FRect(self, coverage=1.6) -> FRect:
|
|
"""
|
|
create FRect from landmarks with given coverage
|
|
"""
|
|
_, uni_mat = self.calc_cut( (1,1), coverage, 1, exclude_moving_parts=False)
|
|
xlt, xlb, xrb, xrt = uni_mat.invert().transform_points([[0,0], [0,1], [1,1], [1,0]])
|
|
l = min(xlt[0], xlb[0])
|
|
t = min(xlt[1], xrt[1])
|
|
r = max(xrt[0], xrb[0])
|
|
b = max(xlb[1], xrb[1])
|
|
return FRect.from_ltrb( (l,t,r,b) )
|
|
|
|
|
|
|
|
def calc_cut(self, h_w, coverage : float, output_size : int,
|
|
exclude_moving_parts : bool = False,
|
|
head_yaw : float = None,
|
|
x_offset : float = 0, y_offset : float = 0,
|
|
freeze_z_rotation = False):
|
|
"""
|
|
Calculates affine mat for face cut.
|
|
|
|
|
|
returns
|
|
mat, matrix to transform img space to face_image space
|
|
uni_mat matrix to transform uniform img space to uniform face_image space
|
|
"""
|
|
h,w = h_w
|
|
type = self._type
|
|
lmrks = (self._ulmrks * (w,h)).astype(np.float32)
|
|
|
|
# estimate landmarks transform from global space to local aligned space with bounds [0..1]
|
|
if type == ELandmarks2D.L106:
|
|
type = ELandmarks2D.L68
|
|
lmrks = lmrks[ lmrks_106_to_68_mean_pairs ]
|
|
lmrks = lmrks.reshape( (68,2,2)).mean(1)
|
|
|
|
if type == ELandmarks2D.L68:
|
|
mat = Affine2DMat.umeyama( np.concatenate ([ lmrks[17:36], lmrks[36:37], lmrks[39:40], lmrks[42:43], lmrks[45:46], lmrks[48:49], lmrks[54:55] ]), uni_landmarks_68)
|
|
|
|
elif type == ELandmarks2D.L468:
|
|
src_lmrks = lmrks
|
|
dst_lmrks = uni_landmarks_468
|
|
if exclude_moving_parts:
|
|
src_lmrks = np.delete(src_lmrks, landmarks_468_moving_parts_indexes, 0)
|
|
dst_lmrks = np.delete(dst_lmrks, landmarks_468_moving_parts_indexes, 0)
|
|
|
|
mat = Affine2DMat.umeyama(src_lmrks, dst_lmrks)
|
|
else:
|
|
raise NotImplementedError()
|
|
|
|
# get corner points in global space
|
|
g_p = mat.invert().transform_points ( [(0,0),(1,0),(1,1),(0,1),(0.5,0.5) ] )
|
|
g_c = g_p[4]
|
|
|
|
# calc diagonal vectors between corners in global space
|
|
tb_diag_vec = lib_math.segment_to_vector(g_p[0], g_p[2]).astype(np.float32)
|
|
bt_diag_vec = lib_math.segment_to_vector(g_p[3], g_p[1]).astype(np.float32)
|
|
|
|
mod = lib_math.segment_length(g_p[0],g_p[4])*coverage
|
|
|
|
if head_yaw is not None:
|
|
# Damp near zero
|
|
x_offset += -(head_yaw * np.abs(np.tanh(head_yaw*2)) ) * 0.5
|
|
|
|
# adjust vertical offset to cover more forehead
|
|
h_vec = (g_p[1]-g_p[0]).astype(np.float32)
|
|
v_vec = (g_p[3]-g_p[0]).astype(np.float32)
|
|
|
|
g_c += h_vec*x_offset + v_vec*y_offset
|
|
|
|
if not freeze_z_rotation:
|
|
l_t = np.array([g_c - tb_diag_vec*mod,
|
|
g_c + bt_diag_vec*mod,
|
|
g_c + tb_diag_vec*mod], np.float32 )
|
|
else:
|
|
# remove_align - face will be centered in the frame but not aligned
|
|
l_t = np.array([g_c - tb_diag_vec*mod,
|
|
g_c + bt_diag_vec*mod,
|
|
g_c + tb_diag_vec*mod,
|
|
g_c - bt_diag_vec*mod], np.float32 )
|
|
|
|
# get area of face square in global space
|
|
area = 0.5*np.abs(np.dot(l_t[:,0],np.roll(l_t[:,1],1))-np.dot(l_t[:,1],np.roll(l_t[:,0],1)))
|
|
|
|
# calc side of square
|
|
side = np.float32(np.sqrt(area) / 2)
|
|
|
|
# calc 3 points with unrotated square
|
|
l_t = np.array([g_c + [-side,-side],
|
|
g_c + [ side,-side],
|
|
g_c + [ side, side]], np.float32 )
|
|
|
|
|
|
|
|
# calc affine transform from 3 global space points to 3 local space points size of 'output_size'
|
|
mat = Affine2DMat.from_3_pairs ( l_t, np.float32(( (0,0),(output_size,0),(output_size,output_size) )))
|
|
uni_mat = Affine2DUniMat.from_3_pairs ( (l_t / (w,h) ).astype(np.float32), np.float32(( (0,0),(1,0),(1,1) )) )
|
|
|
|
return mat, uni_mat
|
|
|
|
|
|
def cut(self, img : np.ndarray,
|
|
coverage : float,
|
|
output_size : int,
|
|
exclude_moving_parts : bool = False,
|
|
head_yaw : float = None,
|
|
x_offset : float = 0,
|
|
y_offset : float = 0,
|
|
freeze_z_rotation : bool = False) -> Tuple[np.ndarray, Affine2DUniMat]:
|
|
"""
|
|
Cut the face to square of output_size from img using landmarks with given parameters
|
|
|
|
arguments
|
|
|
|
img np.ndarray
|
|
|
|
coverage float
|
|
|
|
output_size int
|
|
|
|
exclude_moving_parts(False) exclude moving parts of the face, such as eyebrows and jaw
|
|
|
|
head_yaw(None) float fit the head in center using provided yaw radian value.
|
|
|
|
x_offset
|
|
y_offset float uniform x/y offset
|
|
|
|
returns face_image,
|
|
uni_mat uniform affine matrix to transform uniform img space to uniform face_image space
|
|
"""
|
|
h,w = img.shape[0:2]
|
|
|
|
mat, uni_mat = self.calc_cut( (h,w), coverage, output_size, exclude_moving_parts, head_yaw=head_yaw, x_offset=x_offset, y_offset=y_offset, freeze_z_rotation=freeze_z_rotation)
|
|
|
|
face_image = cv2.warpAffine(img, mat, (output_size, output_size), cv2.INTER_CUBIC )
|
|
return face_image, uni_mat
|
|
|
|
def draw(self, img : np.ndarray, color, radius=1):
|
|
"""
|
|
draw landmarks on the img scaled by img.wh
|
|
|
|
color tuple of values should be the same as img color channels
|
|
"""
|
|
h,w = img.shape[0:2]
|
|
pts = self.as_numpy(w_h=(w,h)).astype(np.int32)
|
|
|
|
for x, y in pts:
|
|
cv2.circle(img, (x, y), radius, color, lineType=cv2.LINE_AA)
|
|
|
|
def get_convexhull_mask(self, h_w, color=(1,), dtype=np.float32) -> np.ndarray:
|
|
"""
|
|
|
|
"""
|
|
h, w = h_w
|
|
ch = len(color)
|
|
lmrks = (self._ulmrks * h_w).astype(np.int32)
|
|
mask = np.zeros( (h,w,ch), dtype=dtype)
|
|
cv2.fillConvexPoly( mask, cv2.convexHull(lmrks), color)
|
|
return mask
|
|
|
|
lmrks_106_to_68_mean_pairs = [1,9, 10,11, 12,13, 14,15, 16,2, 3,4, 5,6, 7,8, 0,0, 24,23, 22,21, 20,19, 18,32, 31,30, 29,28, 27,26,25,17,
|
|
43,43, 48,44, 49,45, 51,47, 50,46,
|
|
102,97, 103,98, 104,99, 105,100, 101,101,
|
|
72,72, 73,73, 74,74, 86,86, 77,78, 78,79, 80,80, 85,84, 84,83,
|
|
35,35, 41,40, 40,42, 39,39, 37,33, 33,36,
|
|
89,89, 95,94, 94,96, 93,93, 91,87, 87,90,
|
|
52,52, 64,64, 63,63, 71,71, 67,67, 68,68, 61,61, 58,58, 59,59, 53,53, 56,56, 55,55, 65,65, 66,66, 62,62, 70,70, 69,69, 57,57, 60,60, 54,54]
|
|
|
|
uni_landmarks_68 = np.float32([
|
|
[ 0.000213256, 0.106454 ], #17
|
|
[ 0.0752622, 0.038915 ], #18
|
|
[ 0.18113, 0.0187482 ], #19
|
|
[ 0.29077, 0.0344891 ], #20
|
|
[ 0.393397, 0.0773906 ], #21
|
|
[ 0.586856, 0.0773906 ], #22
|
|
[ 0.689483, 0.0344891 ], #23
|
|
[ 0.799124, 0.0187482 ], #24
|
|
[ 0.904991, 0.038915 ], #25
|
|
[ 0.98004, 0.106454 ], #26
|
|
[ 0.490127, 0.203352 ], #27
|
|
[ 0.490127, 0.307009 ], #28
|
|
[ 0.490127, 0.409805 ], #29
|
|
[ 0.490127, 0.515625 ], #30
|
|
[ 0.36688, 0.587326 ], #31
|
|
[ 0.426036, 0.609345 ], #32
|
|
[ 0.490127, 0.628106 ], #33
|
|
[ 0.554217, 0.609345 ], #34
|
|
[ 0.613373, 0.587326 ], #35
|
|
|
|
[ 0.121737, 0.216423 ], #36
|
|
#[ 0.187122, 0.178758 ], #37
|
|
#[ 0.265825, 0.179852 ], #38
|
|
[ 0.334606, 0.231733 ], #39
|
|
#[ 0.260918, 0.245099 ], #40
|
|
#[ 0.182743, 0.244077 ], #41
|
|
|
|
[ 0.645647, 0.231733 ], #42
|
|
#[ 0.714428, 0.179852 ], #43
|
|
#[ 0.793132, 0.178758 ], #44
|
|
[ 0.858516, 0.216423 ], #45
|
|
#[ 0.79751, 0.244077 ], #46
|
|
#[ 0.719335, 0.245099 ], #47
|
|
|
|
[ 0.254149, 0.780233 ], #48
|
|
[ 0.726104, 0.780233 ], #54
|
|
])
|
|
|
|
|
|
|
|
uni_landmarks_468 = np.float32([
|
|
[0.499976992607117, 0.652534008026123],
|
|
[0.500025987625122, 0.547487020492554],
|
|
[0.499974012374878, 0.602371990680695],
|
|
[0.482113003730774, 0.471979022026062],
|
|
[0.500150978565216, 0.527155995368958],
|
|
[0.499909996986389, 0.498252987861633],
|
|
[0.499523013830185, 0.40106201171875],
|
|
[0.289712011814117, 0.380764007568359],
|
|
[0.499954998493195, 0.312398016452789],
|
|
[0.499987006187439, 0.269918978214264],
|
|
[0.500023007392883, 0.107050001621246],
|
|
[0.500023007392883, 0.666234016418457],
|
|
[0.5000159740448, 0.679224014282227],
|
|
[0.500023007392883, 0.692348003387451],
|
|
[0.499976992607117, 0.695277988910675],
|
|
[0.499976992607117, 0.70593398809433],
|
|
[0.499976992607117, 0.719385027885437],
|
|
[0.499976992607117, 0.737019002437592],
|
|
[0.499967992305756, 0.781370997428894],
|
|
[0.499816000461578, 0.562981009483337],
|
|
[0.473773002624512, 0.573909997940063],
|
|
[0.104906998574734, 0.254140973091125],
|
|
[0.365929991006851, 0.409575998783112],
|
|
[0.338757991790771, 0.41302502155304],
|
|
[0.311120003461838, 0.409460008144379],
|
|
[0.274657994508743, 0.389131009578705],
|
|
[0.393361985683441, 0.403706014156342],
|
|
[0.345234006643295, 0.344011008739471],
|
|
[0.370094001293182, 0.346076011657715],
|
|
[0.319321990013123, 0.347265005111694],
|
|
[0.297903001308441, 0.353591024875641],
|
|
[0.24779200553894, 0.410809993743896],
|
|
[0.396889001131058, 0.842755019664764],
|
|
[0.280097991228104, 0.375599980354309],
|
|
[0.106310002505779, 0.399955987930298],
|
|
[0.2099249958992, 0.391353011131287],
|
|
[0.355807989835739, 0.534406006336212],
|
|
[0.471751004457474, 0.65040397644043],
|
|
[0.474155008792877, 0.680191993713379],
|
|
[0.439785003662109, 0.657229006290436],
|
|
[0.414617002010345, 0.66654098033905],
|
|
[0.450374007225037, 0.680860996246338],
|
|
[0.428770989179611, 0.682690978050232],
|
|
[0.374971002340317, 0.727805018424988],
|
|
[0.486716985702515, 0.547628998756409],
|
|
[0.485300987958908, 0.527395009994507],
|
|
[0.257764995098114, 0.314490020275116],
|
|
[0.401223003864288, 0.455172002315521],
|
|
[0.429818987846375, 0.548614978790283],
|
|
[0.421351999044418, 0.533740997314453],
|
|
[0.276895999908447, 0.532056987285614],
|
|
[0.483370006084442, 0.499586999416351],
|
|
[0.33721199631691, 0.282882988452911],
|
|
[0.296391993761063, 0.293242990970612],
|
|
[0.169294998049736, 0.193813979625702],
|
|
[0.447580009698868, 0.302609980106354],
|
|
[0.392390012741089, 0.353887975215912],
|
|
[0.354490011930466, 0.696784019470215],
|
|
[0.067304998636246, 0.730105042457581],
|
|
[0.442739009857178, 0.572826027870178],
|
|
[0.457098007202148, 0.584792017936707],
|
|
[0.381974011659622, 0.694710969924927],
|
|
[0.392388999462128, 0.694203019142151],
|
|
[0.277076005935669, 0.271932005882263],
|
|
[0.422551989555359, 0.563233017921448],
|
|
[0.385919004678726, 0.281364023685455],
|
|
[0.383103013038635, 0.255840003490448],
|
|
[0.331431001424789, 0.119714021682739],
|
|
[0.229923993349075, 0.232002973556519],
|
|
[0.364500999450684, 0.189113974571228],
|
|
[0.229622006416321, 0.299540996551514],
|
|
[0.173287004232407, 0.278747975826263],
|
|
[0.472878992557526, 0.666198015213013],
|
|
[0.446828007698059, 0.668527007102966],
|
|
[0.422762006521225, 0.673889994621277],
|
|
[0.445307999849319, 0.580065965652466],
|
|
[0.388103008270264, 0.693961024284363],
|
|
[0.403039008378983, 0.706539988517761],
|
|
[0.403629004955292, 0.693953037261963],
|
|
[0.460041999816895, 0.557139039039612],
|
|
[0.431158006191254, 0.692366003990173],
|
|
[0.452181994915009, 0.692366003990173],
|
|
[0.475387006998062, 0.692366003990173],
|
|
[0.465828001499176, 0.779190003871918],
|
|
[0.472328990697861, 0.736225962638855],
|
|
[0.473087012767792, 0.717857003211975],
|
|
[0.473122000694275, 0.704625964164734],
|
|
[0.473033010959625, 0.695277988910675],
|
|
[0.427942007780075, 0.695277988910675],
|
|
[0.426479011774063, 0.703539967536926],
|
|
[0.423162013292313, 0.711845993995667],
|
|
[0.4183090031147, 0.720062971115112],
|
|
[0.390094995498657, 0.639572978019714],
|
|
[0.013953999616206, 0.560034036636353],
|
|
[0.499913990497589, 0.58014702796936],
|
|
[0.413199990987778, 0.69539999961853],
|
|
[0.409626007080078, 0.701822996139526],
|
|
[0.468080013990402, 0.601534962654114],
|
|
[0.422728985548019, 0.585985004901886],
|
|
[0.463079988956451, 0.593783974647522],
|
|
[0.37211999297142, 0.47341400384903],
|
|
[0.334562003612518, 0.496073007583618],
|
|
[0.411671012639999, 0.546965003013611],
|
|
[0.242175996303558, 0.14767599105835],
|
|
[0.290776997804642, 0.201445996761322],
|
|
[0.327338010072708, 0.256527006626129],
|
|
[0.399509996175766, 0.748921036720276],
|
|
[0.441727995872498, 0.261676013469696],
|
|
[0.429764986038208, 0.187834024429321],
|
|
[0.412198007106781, 0.108901023864746],
|
|
[0.288955003023148, 0.398952007293701],
|
|
[0.218936994671822, 0.435410976409912],
|
|
[0.41278201341629, 0.398970007896423],
|
|
[0.257135003805161, 0.355440020561218],
|
|
[0.427684992551804, 0.437960982322693],
|
|
[0.448339998722076, 0.536936044692993],
|
|
[0.178560003638268, 0.45755398273468],
|
|
[0.247308000922203, 0.457193970680237],
|
|
[0.286267012357712, 0.467674970626831],
|
|
[0.332827985286713, 0.460712015628815],
|
|
[0.368755996227264, 0.447206974029541],
|
|
[0.398963987827301, 0.432654976844788],
|
|
[0.476410001516342, 0.405806005001068],
|
|
[0.189241006970406, 0.523923993110657],
|
|
[0.228962004184723, 0.348950982093811],
|
|
[0.490725994110107, 0.562400996685028],
|
|
[0.404670000076294, 0.485132992267609],
|
|
[0.019469000399113, 0.401564002037048],
|
|
[0.426243007183075, 0.420431017875671],
|
|
[0.396993011236191, 0.548797011375427],
|
|
[0.266469985246658, 0.376977026462555],
|
|
[0.439121007919312, 0.51895797252655],
|
|
[0.032313998788595, 0.644356966018677],
|
|
[0.419054001569748, 0.387154996395111],
|
|
[0.462783008813858, 0.505746960639954],
|
|
[0.238978996872902, 0.779744982719421],
|
|
[0.198220998048782, 0.831938028335571],
|
|
[0.107550002634525, 0.540755033493042],
|
|
[0.183610007166862, 0.740257024765015],
|
|
[0.134409993886948, 0.333683013916016],
|
|
[0.385764002799988, 0.883153975009918],
|
|
[0.490967005491257, 0.579378008842468],
|
|
[0.382384985685349, 0.508572995662689],
|
|
[0.174399003386497, 0.397670984268188],
|
|
[0.318785011768341, 0.39623498916626],
|
|
[0.343364000320435, 0.400596976280212],
|
|
[0.396100014448166, 0.710216999053955],
|
|
[0.187885001301765, 0.588537991046906],
|
|
[0.430987000465393, 0.944064974784851],
|
|
[0.318993002176285, 0.898285031318665],
|
|
[0.266247987747192, 0.869701027870178],
|
|
[0.500023007392883, 0.190576016902924],
|
|
[0.499976992607117, 0.954452991485596],
|
|
[0.366169989109039, 0.398822009563446],
|
|
[0.393207013607025, 0.39553701877594],
|
|
[0.410373002290726, 0.391080021858215],
|
|
[0.194993004202843, 0.342101991176605],
|
|
[0.388664990663528, 0.362284004688263],
|
|
[0.365961998701096, 0.355970978736877],
|
|
[0.343364000320435, 0.355356991291046],
|
|
[0.318785011768341, 0.35834002494812],
|
|
[0.301414996385574, 0.363156020641327],
|
|
[0.058132998645306, 0.319076001644135],
|
|
[0.301414996385574, 0.387449026107788],
|
|
[0.499987989664078, 0.618434011936188],
|
|
[0.415838003158569, 0.624195992946625],
|
|
[0.445681989192963, 0.566076993942261],
|
|
[0.465844005346298, 0.620640993118286],
|
|
[0.49992299079895, 0.351523995399475],
|
|
[0.288718998432159, 0.819945991039276],
|
|
[0.335278987884521, 0.852819979190826],
|
|
[0.440512001514435, 0.902418971061707],
|
|
[0.128294005990028, 0.791940987110138],
|
|
[0.408771991729736, 0.373893976211548],
|
|
[0.455606997013092, 0.451801002025604],
|
|
[0.499877005815506, 0.908990025520325],
|
|
[0.375436991453171, 0.924192011356354],
|
|
[0.11421000212431, 0.615022003650665],
|
|
[0.448662012815475, 0.695277988910675],
|
|
[0.4480200111866, 0.704632043838501],
|
|
[0.447111994028091, 0.715808033943176],
|
|
[0.444831997156143, 0.730794012546539],
|
|
[0.430011987686157, 0.766808986663818],
|
|
[0.406787008047104, 0.685672998428345],
|
|
[0.400738000869751, 0.681069016456604],
|
|
[0.392399996519089, 0.677703022956848],
|
|
[0.367855995893478, 0.663918972015381],
|
|
[0.247923001646996, 0.601333022117615],
|
|
[0.452769994735718, 0.420849978923798],
|
|
[0.43639200925827, 0.359887003898621],
|
|
[0.416164010763168, 0.368713974952698],
|
|
[0.413385987281799, 0.692366003990173],
|
|
[0.228018000721931, 0.683571994304657],
|
|
[0.468268007040024, 0.352671027183533],
|
|
[0.411361992359161, 0.804327011108398],
|
|
[0.499989002943039, 0.469825029373169],
|
|
[0.479153990745544, 0.442654013633728],
|
|
[0.499974012374878, 0.439637005329132],
|
|
[0.432112008333206, 0.493588984012604],
|
|
[0.499886006116867, 0.866917014122009],
|
|
[0.49991300702095, 0.821729004383087],
|
|
[0.456548988819122, 0.819200992584229],
|
|
[0.344549000263214, 0.745438992977142],
|
|
[0.37890899181366, 0.574010014533997],
|
|
[0.374292999505997, 0.780184984207153],
|
|
[0.319687992334366, 0.570737957954407],
|
|
[0.357154995203018, 0.604269981384277],
|
|
[0.295284003019333, 0.621580958366394],
|
|
[0.447750002145767, 0.862477004528046],
|
|
[0.410986006259918, 0.508723020553589],
|
|
[0.31395098567009, 0.775308012962341],
|
|
[0.354128003120422, 0.812552988529205],
|
|
[0.324548006057739, 0.703992962837219],
|
|
[0.189096003770828, 0.646299958229065],
|
|
[0.279776990413666, 0.71465802192688],
|
|
[0.1338230073452, 0.682700991630554],
|
|
[0.336768001317978, 0.644733011722565],
|
|
[0.429883986711502, 0.466521978378296],
|
|
[0.455527991056442, 0.548622965812683],
|
|
[0.437114000320435, 0.558896005153656],
|
|
[0.467287987470627, 0.529924988746643],
|
|
[0.414712011814117, 0.335219979286194],
|
|
[0.37704598903656, 0.322777986526489],
|
|
[0.344107985496521, 0.320150971412659],
|
|
[0.312875986099243, 0.32233202457428],
|
|
[0.283526003360748, 0.333190023899078],
|
|
[0.241245999932289, 0.382785975933075],
|
|
[0.102986000478268, 0.468762993812561],
|
|
[0.267612010240555, 0.424560010433197],
|
|
[0.297879010438919, 0.433175981044769],
|
|
[0.333433985710144, 0.433878004550934],
|
|
[0.366427004337311, 0.426115989685059],
|
|
[0.396012008190155, 0.416696012020111],
|
|
[0.420121014118195, 0.41022801399231],
|
|
[0.007561000064015, 0.480777025222778],
|
|
[0.432949006557465, 0.569517970085144],
|
|
[0.458638995885849, 0.479089021682739],
|
|
[0.473466008901596, 0.545744001865387],
|
|
[0.476087987422943, 0.563830018043518],
|
|
[0.468472003936768, 0.555056989192963],
|
|
[0.433990985155106, 0.582361996173859],
|
|
[0.483518004417419, 0.562983989715576],
|
|
[0.482482999563217, 0.57784903049469],
|
|
[0.42645001411438, 0.389798998832703],
|
|
[0.438998997211456, 0.39649498462677],
|
|
[0.450067013502121, 0.400434017181396],
|
|
[0.289712011814117, 0.368252992630005],
|
|
[0.276670008897781, 0.363372981548309],
|
|
[0.517862021923065, 0.471948027610779],
|
|
[0.710287988185883, 0.380764007568359],
|
|
[0.526226997375488, 0.573909997940063],
|
|
[0.895093023777008, 0.254140973091125],
|
|
[0.634069979190826, 0.409575998783112],
|
|
[0.661242008209229, 0.41302502155304],
|
|
[0.688880026340485, 0.409460008144379],
|
|
[0.725341975688934, 0.389131009578705],
|
|
[0.606630027294159, 0.40370500087738],
|
|
[0.654766023159027, 0.344011008739471],
|
|
[0.629905998706818, 0.346076011657715],
|
|
[0.680678009986877, 0.347265005111694],
|
|
[0.702096998691559, 0.353591024875641],
|
|
[0.75221198797226, 0.410804986953735],
|
|
[0.602918028831482, 0.842862963676453],
|
|
[0.719901978969574, 0.375599980354309],
|
|
[0.893692970275879, 0.399959981441498],
|
|
[0.790081977844238, 0.391354024410248],
|
|
[0.643998026847839, 0.534487962722778],
|
|
[0.528249025344849, 0.65040397644043],
|
|
[0.525849997997284, 0.680191040039062],
|
|
[0.560214996337891, 0.657229006290436],
|
|
[0.585384011268616, 0.66654098033905],
|
|
[0.549625992774963, 0.680860996246338],
|
|
[0.57122802734375, 0.682691991329193],
|
|
[0.624852001667023, 0.72809898853302],
|
|
[0.513050019741058, 0.547281980514526],
|
|
[0.51509702205658, 0.527251958847046],
|
|
[0.742246985435486, 0.314507007598877],
|
|
[0.598631024360657, 0.454979002475739],
|
|
[0.570338010787964, 0.548575043678284],
|
|
[0.578631997108459, 0.533622980117798],
|
|
[0.723087012767792, 0.532054007053375],
|
|
[0.516445994377136, 0.499638974666595],
|
|
[0.662801027297974, 0.282917976379395],
|
|
[0.70362401008606, 0.293271005153656],
|
|
[0.830704987049103, 0.193813979625702],
|
|
[0.552385985851288, 0.302568018436432],
|
|
[0.607609987258911, 0.353887975215912],
|
|
[0.645429015159607, 0.696707010269165],
|
|
[0.932694971561432, 0.730105042457581],
|
|
[0.557260990142822, 0.572826027870178],
|
|
[0.542901992797852, 0.584792017936707],
|
|
[0.6180260181427, 0.694710969924927],
|
|
[0.607590973377228, 0.694203019142151],
|
|
[0.722943007946014, 0.271963000297546],
|
|
[0.577413976192474, 0.563166975975037],
|
|
[0.614082992076874, 0.281386971473694],
|
|
[0.616907000541687, 0.255886018276215],
|
|
[0.668509006500244, 0.119913995265961],
|
|
[0.770092010498047, 0.232020974159241],
|
|
[0.635536015033722, 0.189248979091644],
|
|
[0.77039098739624, 0.299556016921997],
|
|
[0.826722025871277, 0.278755009174347],
|
|
[0.527121007442474, 0.666198015213013],
|
|
[0.553171992301941, 0.668527007102966],
|
|
[0.577238023281097, 0.673889994621277],
|
|
[0.554691970348358, 0.580065965652466],
|
|
[0.611896991729736, 0.693961024284363],
|
|
[0.59696102142334, 0.706539988517761],
|
|
[0.596370995044708, 0.693953037261963],
|
|
[0.539958000183105, 0.557139039039612],
|
|
[0.568841993808746, 0.692366003990173],
|
|
[0.547818005084991, 0.692366003990173],
|
|
[0.52461302280426, 0.692366003990173],
|
|
[0.534089982509613, 0.779141008853912],
|
|
[0.527670979499817, 0.736225962638855],
|
|
[0.526912987232208, 0.717857003211975],
|
|
[0.526877999305725, 0.704625964164734],
|
|
[0.526966989040375, 0.695277988910675],
|
|
[0.572058022022247, 0.695277988910675],
|
|
[0.573521018028259, 0.703539967536926],
|
|
[0.57683801651001, 0.711845993995667],
|
|
[0.581691026687622, 0.720062971115112],
|
|
[0.609944999217987, 0.639909982681274],
|
|
[0.986046016216278, 0.560034036636353],
|
|
[0.5867999792099, 0.69539999961853],
|
|
[0.590372025966644, 0.701822996139526],
|
|
[0.531915009021759, 0.601536989212036],
|
|
[0.577268004417419, 0.585934996604919],
|
|
[0.536915004253387, 0.593786001205444],
|
|
[0.627542972564697, 0.473352015018463],
|
|
[0.665585994720459, 0.495950996875763],
|
|
[0.588353991508484, 0.546862006187439],
|
|
[0.757824003696442, 0.14767599105835],
|
|
[0.709249973297119, 0.201507985591888],
|
|
[0.672684013843536, 0.256581008434296],
|
|
[0.600408971309662, 0.74900496006012],
|
|
[0.55826598405838, 0.261672019958496],
|
|
[0.570303976535797, 0.187870979309082],
|
|
[0.588165998458862, 0.109044015407562],
|
|
[0.711045026779175, 0.398952007293701],
|
|
[0.781069993972778, 0.435405015945435],
|
|
[0.587247014045715, 0.398931980133057],
|
|
[0.742869973182678, 0.355445981025696],
|
|
[0.572156012058258, 0.437651991844177],
|
|
[0.55186802148819, 0.536570012569427],
|
|
[0.821442008018494, 0.457556009292603],
|
|
[0.752701997756958, 0.457181990146637],
|
|
[0.71375697851181, 0.467626988887787],
|
|
[0.66711300611496, 0.460672974586487],
|
|
[0.631101012229919, 0.447153985500336],
|
|
[0.6008620262146, 0.432473003864288],
|
|
[0.523481011390686, 0.405627012252808],
|
|
[0.810747981071472, 0.523926019668579],
|
|
[0.771045982837677, 0.348959028720856],
|
|
[0.509127020835876, 0.562718033790588],
|
|
[0.595292985439301, 0.485023975372314],
|
|
[0.980530977249146, 0.401564002037048],
|
|
[0.573499977588654, 0.420000016689301],
|
|
[0.602994978427887, 0.548687994480133],
|
|
[0.733529984951019, 0.376977026462555],
|
|
[0.560611009597778, 0.519016981124878],
|
|
[0.967685997486115, 0.644356966018677],
|
|
[0.580985009670258, 0.387160003185272],
|
|
[0.537728011608124, 0.505385041236877],
|
|
[0.760966002941132, 0.779752969741821],
|
|
[0.801778972148895, 0.831938028335571],
|
|
[0.892440974712372, 0.54076099395752],
|
|
[0.816350996494293, 0.740260004997253],
|
|
[0.865594983100891, 0.333687007427216],
|
|
[0.614073991775513, 0.883246004581451],
|
|
[0.508952975273132, 0.579437971115112],
|
|
[0.617941975593567, 0.508316040039062],
|
|
[0.825608015060425, 0.397674977779388],
|
|
[0.681214988231659, 0.39623498916626],
|
|
[0.656635999679565, 0.400596976280212],
|
|
[0.603900015354156, 0.710216999053955],
|
|
[0.81208598613739, 0.588539004325867],
|
|
[0.56801301240921, 0.944564998149872],
|
|
[0.681007981300354, 0.898285031318665],
|
|
[0.733752012252808, 0.869701027870178],
|
|
[0.633830010890961, 0.398822009563446],
|
|
[0.606792986392975, 0.39553701877594],
|
|
[0.589659988880157, 0.391062021255493],
|
|
[0.805015981197357, 0.342108011245728],
|
|
[0.611334979534149, 0.362284004688263],
|
|
[0.634037971496582, 0.355970978736877],
|
|
[0.656635999679565, 0.355356991291046],
|
|
[0.681214988231659, 0.35834002494812],
|
|
[0.698584973812103, 0.363156020641327],
|
|
[0.941866993904114, 0.319076001644135],
|
|
[0.698584973812103, 0.387449026107788],
|
|
[0.584177017211914, 0.624107003211975],
|
|
[0.554318010807037, 0.566076993942261],
|
|
[0.534153997898102, 0.62064003944397],
|
|
[0.711217999458313, 0.819975018501282],
|
|
[0.664629995822906, 0.852871000766754],
|
|
[0.559099972248077, 0.902631998062134],
|
|
[0.871706008911133, 0.791940987110138],
|
|
[0.591234028339386, 0.373893976211548],
|
|
[0.544341027736664, 0.451583981513977],
|
|
[0.624562978744507, 0.924192011356354],
|
|
[0.88577002286911, 0.615028977394104],
|
|
[0.551338016986847, 0.695277988910675],
|
|
[0.551980018615723, 0.704632043838501],
|
|
[0.552887976169586, 0.715808033943176],
|
|
[0.555167973041534, 0.730794012546539],
|
|
[0.569944024085999, 0.767035007476807],
|
|
[0.593203008174896, 0.685675978660583],
|
|
[0.599261999130249, 0.681069016456604],
|
|
[0.607599973678589, 0.677703022956848],
|
|
[0.631937980651855, 0.663500010967255],
|
|
[0.752032995223999, 0.601315021514893],
|
|
[0.547226011753082, 0.420395016670227],
|
|
[0.563543975353241, 0.359827995300293],
|
|
[0.583841025829315, 0.368713974952698],
|
|
[0.586614012718201, 0.692366003990173],
|
|
[0.771915018558502, 0.683578014373779],
|
|
[0.531597018241882, 0.352482974529266],
|
|
[0.588370978832245, 0.804440975189209],
|
|
[0.52079701423645, 0.442565023899078],
|
|
[0.567984998226166, 0.493479013442993],
|
|
[0.543282985687256, 0.819254994392395],
|
|
[0.655317008495331, 0.745514988899231],
|
|
[0.621008992195129, 0.574018001556396],
|
|
[0.625559985637665, 0.78031200170517],
|
|
[0.680198013782501, 0.570719003677368],
|
|
[0.64276397228241, 0.604337990283966],
|
|
[0.704662978649139, 0.621529996395111],
|
|
[0.552012026309967, 0.862591981887817],
|
|
[0.589071989059448, 0.508637011051178],
|
|
[0.685944974422455, 0.775357007980347],
|
|
[0.645735025405884, 0.812640011310577],
|
|
[0.675342977046967, 0.703978002071381],
|
|
[0.810858011245728, 0.646304965019226],
|
|
[0.72012197971344, 0.714666962623596],
|
|
[0.866151988506317, 0.682704985141754],
|
|
[0.663187026977539, 0.644596993923187],
|
|
[0.570082008838654, 0.466325998306274],
|
|
[0.544561982154846, 0.548375964164734],
|
|
[0.562758982181549, 0.558784961700439],
|
|
[0.531987011432648, 0.530140042304993],
|
|
[0.585271000862122, 0.335177004337311],
|
|
[0.622952997684479, 0.32277899980545],
|
|
[0.655896008014679, 0.320163011550903],
|
|
[0.687132000923157, 0.322345972061157],
|
|
[0.716481983661652, 0.333200991153717],
|
|
[0.758756995201111, 0.382786989212036],
|
|
[0.897013008594513, 0.468769013881683],
|
|
[0.732392013072968, 0.424547016620636],
|
|
[0.70211398601532, 0.433162987232208],
|
|
[0.66652500629425, 0.433866024017334],
|
|
[0.633504986763, 0.426087975502014],
|
|
[0.603875994682312, 0.416586995124817],
|
|
[0.579657971858978, 0.409945011138916],
|
|
[0.992439985275269, 0.480777025222778],
|
|
[0.567192018032074, 0.569419980049133],
|
|
[0.54136598110199, 0.478899002075195],
|
|
[0.526564002037048, 0.546118021011353],
|
|
[0.523913025856018, 0.563830018043518],
|
|
[0.531529009342194, 0.555056989192963],
|
|
[0.566035985946655, 0.582329034805298],
|
|
[0.51631098985672, 0.563053965568542],
|
|
[0.5174720287323, 0.577877044677734],
|
|
[0.573594987392426, 0.389806985855103],
|
|
[0.560697972774506, 0.395331978797913],
|
|
[0.549755990505219, 0.399751007556915],
|
|
[0.710287988185883, 0.368252992630005],
|
|
[0.723330020904541, 0.363372981548309]
|
|
])
|
|
|
|
landmarks_468_moving_parts_indexes = [0, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 43, 46, 52, 53, 54, 55, 56, 57, 58, 61, 62, 63, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 76, 77, 78, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 95, 96, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 117, 118, 124, 130, 132, 133, 135, 136, 138, 139, 140, 143, 144, 145, 146, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 168, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 189, 190, 191, 192, 193, 194, 199, 200, 201, 202, 204, 208, 210, 211, 212, 213, 214, 215, 221, 222, 223, 224, 225, 226, 228, 229, 230, 231, 232, 233, 243, 244, 245, 246, 247, 249, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 267, 268, 269, 270, 271, 272, 273, 276, 282, 283, 284, 285, 286, 287, 288, 291, 292, 293, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 306, 307, 308, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 324, 325, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 346, 347, 353, 359, 361, 362, 364, 365, 367, 368, 369, 372, 373, 374, 375, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 394, 395, 396, 397, 398, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 413, 414, 415, 416, 417, 418, 421, 422, 424, 428, 430, 431, 432, 433, 434, 435, 441, 442, 443, 444, 445, 446, 448, 449, 450, 451, 452, 453, 463, 464, 465, 466, 467]
|
|
uni_landmarks_468 = np.array(
|
|
[[ 0.49066195, 0.7133885 ],
|
|
[ 0.49042386, 0.52723485],
|
|
[ 0.49050152, 0.6244965 ],
|
|
[ 0.45844677, 0.39348277],
|
|
[ 0.4905825 , 0.49120593],
|
|
[ 0.49006602, 0.43998772],
|
|
[ 0.48907965, 0.26775706],
|
|
[ 0.11721139, 0.23243594],
|
|
[ 0.48957095, 0.11063451],
|
|
[ 0.48949632, 0.03535742],
|
|
[ 0.48905632, -0.25326234],
|
|
[ 0.4907858 , 0.73766613],
|
|
[ 0.49081355, 0.7606857 ],
|
|
[ 0.4908666 , 0.7839426 ],
|
|
[ 0.49079415, 0.78913504],
|
|
[ 0.4908271 , 0.80801845],
|
|
[ 0.49086872, 0.831855 ],
|
|
[ 0.49092326, 0.8631041 ],
|
|
[ 0.49104446, 0.94170016],
|
|
[ 0.49009967, 0.5546924 ],
|
|
[ 0.44398275, 0.5741402 ],
|
|
[-0.2106727 , 0.00861922],
|
|
[ 0.2523662 , 0.2832579 ],
|
|
[ 0.2042254 , 0.28945392],
|
|
[ 0.1552372 , 0.28322184],
|
|
[ 0.09056008, 0.24730967],
|
|
[ 0.30096018, 0.27277085],
|
|
[ 0.21548809, 0.16713436],
|
|
[ 0.2595488 , 0.17071684],
|
|
[ 0.16957955, 0.17298089],
|
|
[ 0.13164258, 0.18425746],
|
|
[ 0.043018 , 0.28581 ],
|
|
[ 0.30856833, 1.0507976 ],
|
|
[ 0.10015843, 0.22331452],
|
|
[-0.20773543, 0.26701325],
|
|
[-0.02414621, 0.25144747],
|
|
[ 0.23481508, 0.5045001 ],
|
|
[ 0.44063616, 0.7097012 ],
|
|
[ 0.4449884 , 0.762481 ],
|
|
[ 0.3840104 , 0.7218947 ],
|
|
[ 0.33943903, 0.73847425],
|
|
[ 0.40284824, 0.76374006],
|
|
[ 0.36457124, 0.76704985],
|
|
[ 0.26937196, 0.84716266],
|
|
[ 0.46683946, 0.5275276 ],
|
|
[ 0.4642676 , 0.49167544],
|
|
[ 0.06039319, 0.11509081],
|
|
[ 0.31504983, 0.36394927],
|
|
[ 0.3660137 , 0.52945083],
|
|
[ 0.3509634 , 0.50311893],
|
|
[ 0.09496811, 0.5005815 ],
|
|
[ 0.46075967, 0.4424029 ],
|
|
[ 0.20108324, 0.05883435],
|
|
[ 0.12877828, 0.07731954],
|
|
[-0.09675749, -0.09848522],
|
|
[ 0.39672711, 0.09345116],
|
|
[ 0.29908365, 0.18449144],
|
|
[ 0.23298171, 0.7922538 ],
|
|
[-0.27583498, 0.85219014],
|
|
[ 0.38898414, 0.5723152 ],
|
|
[ 0.41446668, 0.59347576],
|
|
[ 0.28167963, 0.7884952 ],
|
|
[ 0.30013445, 0.7875627 ],
|
|
[ 0.09448256, 0.03961415],
|
|
[ 0.3531811 , 0.5553779 ],
|
|
[ 0.2873921 , 0.05599196],
|
|
[ 0.28232294, 0.01076962],
|
|
[ 0.1903341 , -0.23029903],
|
|
[ 0.0108011 , -0.03099815],
|
|
[ 0.24915197, -0.10741784],
|
|
[ 0.01047484, 0.08868673],
|
|
[-0.08942058, 0.05201372],
|
|
[ 0.44268388, 0.7376863 ],
|
|
[ 0.39652622, 0.741894 ],
|
|
[ 0.35389552, 0.7514722 ],
|
|
[ 0.393559 , 0.5851372 ],
|
|
[ 0.2925385 , 0.7871472 ],
|
|
[ 0.31904542, 0.80939215],
|
|
[ 0.32005206, 0.787085 ],
|
|
[ 0.4195982 , 0.5444628 ],
|
|
[ 0.3688312 , 0.78418756],
|
|
[ 0.40608776, 0.7841225 ],
|
|
[ 0.4472093 , 0.78405076],
|
|
[ 0.43053833, 0.9379409 ],
|
|
[ 0.44192585, 0.8617842 ],
|
|
[ 0.44321233, 0.82923037],
|
|
[ 0.4432334 , 0.80578357],
|
|
[ 0.44304678, 0.78921837],
|
|
[ 0.36314115, 0.7893578 ],
|
|
[ 0.36057413, 0.8040033 ],
|
|
[ 0.35472178, 0.8187327 ],
|
|
[ 0.34614718, 0.83330894],
|
|
[ 0.2959003 , 0.69076014],
|
|
[-0.37090415, 0.5509728 ],
|
|
[ 0.4903264 , 0.5851119 ],
|
|
[ 0.3370172 , 0.78961957],
|
|
[ 0.33070365, 0.8010128 ],
|
|
[ 0.43397966, 0.6231119 ],
|
|
[ 0.35356513, 0.59569615],
|
|
[ 0.42509514, 0.6093918 ],
|
|
[ 0.2635329 , 0.39636588],
|
|
[ 0.19704658, 0.43663597],
|
|
[ 0.33384863, 0.52658314],
|
|
[ 0.03225203, -0.18047164],
|
|
[ 0.11854403, -0.08533629],
|
|
[ 0.18350407, 0.01215954],
|
|
[ 0.31292278, 0.8845064 ],
|
|
[ 0.3862302 , 0.02093028],
|
|
[ 0.36480215, -0.1098879 ],
|
|
[ 0.33342764, -0.2497105 ],
|
|
[ 0.11592615, 0.2646692 ],
|
|
[-0.00803981, 0.3294946 ],
|
|
[ 0.33535972, 0.26431814],
|
|
[ 0.05940344, 0.18766014],
|
|
[ 0.36188984, 0.33336782],
|
|
[ 0.39879864, 0.50869733],
|
|
[-0.07952328, 0.36885905],
|
|
[ 0.04230375, 0.36800843],
|
|
[ 0.11137532, 0.3864613 ],
|
|
[ 0.19386435, 0.37397826],
|
|
[ 0.25749052, 0.34993485],
|
|
[ 0.310977 , 0.3240539 ],
|
|
[ 0.44813582, 0.2762354 ],
|
|
[-0.06039021, 0.4864401 ],
|
|
[ 0.00945808, 0.17624807],
|
|
[ 0.4739895 , 0.55369264],
|
|
[ 0.32125092, 0.4170324 ],
|
|
[-0.36162117, 0.27013144],
|
|
[ 0.3592803 , 0.3023075 ],
|
|
[ 0.30784345, 0.529875 ],
|
|
[ 0.07601253, 0.22579695],
|
|
[ 0.3824061 , 0.47686696],
|
|
[-0.33810768, 0.70034444],
|
|
[ 0.34643772, 0.24336138],
|
|
[ 0.42429656, 0.45338264],
|
|
[ 0.02854156, 0.939626 ],
|
|
[-0.04352415, 1.0322431 ],
|
|
[-0.20510256, 0.51651907],
|
|
[-0.06969981, 0.8698207 ],
|
|
[-0.1581445 , 0.14948419],
|
|
[ 0.2889787 , 1.1224228 ],
|
|
[ 0.47446907, 0.58377683],
|
|
[ 0.2818322 , 0.4586393 ],
|
|
[-0.08708218, 0.2627534 ],
|
|
[ 0.16877942, 0.25976214],
|
|
[ 0.21234928, 0.267416 ],
|
|
[ 0.30676025, 0.81592965],
|
|
[-0.06259334, 0.6009466 ],
|
|
[ 0.36930662, 1.2302231 ],
|
|
[ 0.17070079, 1.149443 ],
|
|
[ 0.07714309, 1.0989524 ],
|
|
[ 0.48931465, -0.1052461 ],
|
|
[ 0.49159575, 1.2484183 ],
|
|
[ 0.2527582 , 0.26420003],
|
|
[ 0.30066028, 0.25829503],
|
|
[ 0.3310663 , 0.25034374],
|
|
[-0.05075949, 0.16421606],
|
|
[ 0.29250854, 0.19938153],
|
|
[ 0.2522571 , 0.18826446],
|
|
[ 0.21220936, 0.18724632],
|
|
[ 0.16866222, 0.19260857],
|
|
[ 0.13789575, 0.2011967 ],
|
|
[-0.29335994, 0.12383505],
|
|
[ 0.1379709 , 0.24424627],
|
|
[ 0.49057597, 0.65296 ],
|
|
[ 0.34147182, 0.663431 ],
|
|
[ 0.3941785 , 0.5603462 ],
|
|
[ 0.43007633, 0.6569765 ],
|
|
[ 0.48963526, 0.17996965],
|
|
[ 0.11681002, 1.0107123 ],
|
|
[ 0.19942053, 1.068824 ],
|
|
[ 0.38605705, 1.1563928 ],
|
|
[-0.16756529, 0.9615808 ],
|
|
[ 0.32817602, 0.21989337],
|
|
[ 0.41141313, 0.3578073 ],
|
|
[ 0.49127796, 1.1678538 ],
|
|
[ 0.27080515, 1.195178 ],
|
|
[-0.19307071, 0.6481067 ],
|
|
[ 0.399859 , 0.7892937 ],
|
|
[ 0.39875022, 0.80587196],
|
|
[ 0.39717573, 0.8256797 ],
|
|
[ 0.3931817 , 0.85224336],
|
|
[ 0.3670306 , 0.9161113 ],
|
|
[ 0.3256227 , 0.7724022 ],
|
|
[ 0.31488904, 0.76426226],
|
|
[ 0.3001029 , 0.7583232 ],
|
|
[ 0.2565659 , 0.73397243],
|
|
[ 0.0438394 , 0.6234349 ],
|
|
[ 0.40628996, 0.30296788],
|
|
[ 0.37707803, 0.19498621],
|
|
[ 0.34125936, 0.21069102],
|
|
[ 0.33733743, 0.7842425 ],
|
|
[ 0.00882016, 0.769232 ],
|
|
[ 0.4335431 , 0.1821002 ],
|
|
[ 0.33409703, 0.9826546 ],
|
|
[ 0.49011812, 0.3896104 ],
|
|
[ 0.45311242, 0.34152514],
|
|
[ 0.4899982 , 0.33611432],
|
|
[ 0.369907 , 0.43193236],
|
|
[ 0.49116373, 1.0932964 ],
|
|
[ 0.49107185, 1.0132186 ],
|
|
[ 0.41421878, 1.008873 ],
|
|
[ 0.21551576, 0.8785059 ],
|
|
[ 0.27587482, 0.57461077],
|
|
[ 0.2683325 , 0.9399872 ],
|
|
[ 0.17091931, 0.56899554],
|
|
[ 0.23741819, 0.6283017 ],
|
|
[ 0.12783033, 0.65916985],
|
|
[ 0.39875996, 1.0855893 ],
|
|
[ 0.33251646, 0.45881665],
|
|
[ 0.16138549, 0.93153137],
|
|
[ 0.23269826, 0.99740875],
|
|
[ 0.17994387, 0.8051213 ],
|
|
[-0.06026869, 0.7033027 ],
|
|
[ 0.10063827, 0.8241594 ],
|
|
[-0.15810522, 0.7679798 ],
|
|
[ 0.2014156 , 0.7000692 ],
|
|
[ 0.365875 , 0.3839739 ],
|
|
[ 0.4115726 , 0.5293855 ],
|
|
[ 0.378973 , 0.5476473 ],
|
|
[ 0.43235463, 0.49621448],
|
|
[ 0.3385827 , 0.15134089],
|
|
[ 0.27179635, 0.12940899],
|
|
[ 0.21341887, 0.12485553],
|
|
[ 0.15807948, 0.12881717],
|
|
[ 0.10610204, 0.14814937],
|
|
[ 0.03133116, 0.236169 ],
|
|
[-0.21341309, 0.38895622],
|
|
[ 0.07818349, 0.3101151 ],
|
|
[ 0.1318462 , 0.32528982],
|
|
[ 0.19485526, 0.32642388],
|
|
[ 0.25329807, 0.31256682],
|
|
[ 0.30569646, 0.29578218],
|
|
[ 0.34839994, 0.2842457 ],
|
|
[-0.3824783 , 0.41054142],
|
|
[ 0.37162504, 0.5664833 ],
|
|
[ 0.41687053, 0.40615496],
|
|
[ 0.4433516 , 0.5242282 ],
|
|
[ 0.44805393, 0.5562703 ],
|
|
[ 0.43453053, 0.5407472 ],
|
|
[ 0.37351128, 0.58924097],
|
|
[ 0.46121803, 0.55474806],
|
|
[ 0.45942986, 0.5810936 ],
|
|
[ 0.35955238, 0.24802393],
|
|
[ 0.38181108, 0.25985107],
|
|
[ 0.40143687, 0.26679716],
|
|
[ 0.11717269, 0.2102652 ],
|
|
[ 0.0940459 , 0.2016577 ],
|
|
[ 0.5217974 , 0.39331725],
|
|
[ 0.8625129 , 0.23113514],
|
|
[ 0.5369363 , 0.57397795],
|
|
[ 1.1896138 , 0.00617525],
|
|
[ 0.7275363 , 0.28242856],
|
|
[ 0.7756985 , 0.2884565 ],
|
|
[ 0.82466465, 0.28205347],
|
|
[ 0.88921595, 0.24591576],
|
|
[ 0.6788919 , 0.27210945],
|
|
[ 0.7640089 , 0.166177 ],
|
|
[ 0.7199609 , 0.16991326],
|
|
[ 0.8099376 , 0.17186326],
|
|
[ 0.8479136 , 0.18300733],
|
|
[ 0.9368992 , 0.28424102],
|
|
[ 0.67367214, 1.0503516 ],
|
|
[ 0.8795338 , 0.22195426],
|
|
[ 1.1875838 , 0.26458502],
|
|
[ 1.0039485 , 0.24965489],
|
|
[ 0.74551606, 0.50375396],
|
|
[ 0.54075617, 0.7095265 ],
|
|
[ 0.5365969 , 0.76231945],
|
|
[ 0.59742403, 0.7215222 ],
|
|
[ 0.6420548 , 0.7379461 ],
|
|
[ 0.5787324 , 0.7634331 ],
|
|
[ 0.617019 , 0.766611 ],
|
|
[ 0.71218634, 0.8469107 ],
|
|
[ 0.513503 , 0.52683127],
|
|
[ 0.5170686 , 0.49132976],
|
|
[ 0.91894245, 0.11362247],
|
|
[ 0.66487545, 0.36299667],
|
|
[ 0.61502695, 0.52894545],
|
|
[ 0.6296784 , 0.50242335],
|
|
[ 0.88566196, 0.49919614],
|
|
[ 0.5193738 , 0.4423927 ],
|
|
[ 0.7780587 , 0.05788935],
|
|
[ 0.8504331 , 0.07610969],
|
|
[ 1.0753254 , -0.1005309 ],
|
|
[ 0.5824533 , 0.09305263],
|
|
[ 0.6804744 , 0.18382579],
|
|
[ 0.7485537 , 0.79121745],
|
|
[ 1.2577202 , 0.8495136 ],
|
|
[ 0.59192824, 0.57196105],
|
|
[ 0.5665197 , 0.59321034],
|
|
[ 0.6999867 , 0.7877651 ],
|
|
[ 0.6814933 , 0.7868972 ],
|
|
[ 0.8846023 , 0.03829005],
|
|
[ 0.62761134, 0.5547819 ],
|
|
[ 0.6917209 , 0.05532694],
|
|
[ 0.6966465 , 0.01012804],
|
|
[ 0.7876697 , -0.2309872 ],
|
|
[ 0.9680314 , -0.03263693],
|
|
[ 0.7294528 , -0.1080169 ],
|
|
[ 0.96877015, 0.08704082],
|
|
[ 1.0685298 , 0.05000517],
|
|
[ 0.538806 , 0.7375185 ],
|
|
[ 0.5849781 , 0.7415651 ],
|
|
[ 0.62764204, 0.7509944 ],
|
|
[ 0.58739805, 0.5847989 ],
|
|
[ 0.68912315, 0.78645504],
|
|
[ 0.6626941 , 0.8087924 ],
|
|
[ 0.6616096 , 0.7864889 ],
|
|
[ 0.5612171 , 0.5442156 ],
|
|
[ 0.61282057, 0.7837617 ],
|
|
[ 0.575564 , 0.7838267 ],
|
|
[ 0.5344426 , 0.7838985 ],
|
|
[ 0.551505 , 0.93764293],
|
|
[ 0.5399973 , 0.8616131 ],
|
|
[ 0.53859717, 0.8290639 ],
|
|
[ 0.5384943 , 0.8056173 ],
|
|
[ 0.53862303, 0.78905153],
|
|
[ 0.6185288 , 0.78891206],
|
|
[ 0.62114686, 0.8035485 ],
|
|
[ 0.62705064, 0.81825733],
|
|
[ 0.635676 , 0.8328036 ],
|
|
[ 0.6854969 , 0.69067734],
|
|
[ 1.3517375 , 0.54796624],
|
|
[ 0.64465326, 0.78908265],
|
|
[ 0.6510032 , 0.8004538 ],
|
|
[ 0.5471015 , 0.62291807],
|
|
[ 0.62742317, 0.59512955],
|
|
[ 0.55593795, 0.6091671 ],
|
|
[ 0.7161671 , 0.39546603],
|
|
[ 0.7836529 , 0.435396 ],
|
|
[ 0.64694774, 0.5258542 ],
|
|
[ 0.94603044, -0.1820665 ],
|
|
[ 0.86011904, -0.08652072],
|
|
[ 0.79549086, 0.01118712],
|
|
[ 0.66893554, 0.8840338 ],
|
|
[ 0.59274685, 0.02056277],
|
|
[ 0.613851 , -0.11025709],
|
|
[ 0.64526045, -0.25000137],
|
|
[ 0.8639107 , 0.26336375],
|
|
[ 0.9881146 , 0.3277454 ],
|
|
[ 0.6445285 , 0.26371115],
|
|
[ 0.92017305, 0.18616839],
|
|
[ 0.61790556, 0.3323734 ],
|
|
[ 0.58225924, 0.5077285 ],
|
|
[ 1.0597262 , 0.36687428],
|
|
[ 0.93791103, 0.36642405],
|
|
[ 0.86892897, 0.38505408],
|
|
[ 0.78624976, 0.37287512],
|
|
[ 0.7223912 , 0.34902957],
|
|
[ 0.6687594 , 0.32310694],
|
|
[ 0.5315497 , 0.2757726 ],
|
|
[ 1.0409807 , 0.48452145],
|
|
[ 0.9700836 , 0.17458573],
|
|
[ 0.5065989 , 0.55419755],
|
|
[ 0.6590531 , 0.41624966],
|
|
[ 1.3414742 , 0.26715896],
|
|
[ 0.62023264, 0.30108824],
|
|
[ 0.67289865, 0.5290446 ],
|
|
[ 0.9036883 , 0.22435239],
|
|
[ 0.59769833, 0.47659585],
|
|
[ 1.3194624 , 0.6974514 ],
|
|
[ 0.63339525, 0.24286939],
|
|
[ 0.5571053 , 0.45250946],
|
|
[ 0.9535533 , 0.9380257 ],
|
|
[ 1.0260391 , 1.0303764 ],
|
|
[ 1.1858007 , 0.51410204],
|
|
[ 1.0515786 , 0.867869 ],
|
|
[ 1.1375865 , 0.14722979],
|
|
[ 0.6935665 , 1.1218798 ],
|
|
[ 0.5063422 , 0.58382744],
|
|
[ 0.69926125, 0.45745537],
|
|
[ 1.0669235 , 0.26074636],
|
|
[ 0.8110406 , 0.25864118],
|
|
[ 0.7674977 , 0.26644707],
|
|
[ 0.67500204, 0.81528693],
|
|
[ 1.0435516 , 0.5990178 ],
|
|
[ 0.6121316 , 1.2306852 ],
|
|
[ 0.81222653, 1.1483234 ],
|
|
[ 0.9056057 , 1.0975065 ],
|
|
[ 0.7270778 , 0.26337218],
|
|
[ 0.6791554 , 0.25763443],
|
|
[ 0.6487802 , 0.24975733],
|
|
[ 1.0302606 , 0.16233999],
|
|
[ 0.68710136, 0.19869283],
|
|
[ 0.72731376, 0.18743533],
|
|
[ 0.7673578 , 0.1862774 ],
|
|
[ 0.81092334, 0.1914876 ],
|
|
[ 0.84171957, 0.1999683 ],
|
|
[ 1.2727026 , 0.12110176],
|
|
[ 0.8417947 , 0.24301787],
|
|
[ 0.63978463, 0.6627527 ],
|
|
[ 0.5866921 , 0.5600102 ],
|
|
[ 0.5511283 , 0.6567636 ],
|
|
[ 0.8655194 , 1.009457 ],
|
|
[ 0.78306264, 1.0678959 ],
|
|
[ 0.59620714, 1.1564037 ],
|
|
[ 1.149833 , 0.9592815 ],
|
|
[ 0.65151644, 0.21932903],
|
|
[ 0.56865776, 0.3571483 ],
|
|
[ 0.71228063, 1.1944076 ],
|
|
[ 1.1742088 , 0.6457327 ],
|
|
[ 0.5818109 , 0.78897613],
|
|
[ 0.5829775 , 0.80555046],
|
|
[ 0.5846211 , 0.82535255],
|
|
[ 0.5887078 , 0.8519021 ],
|
|
[ 0.6150045 , 0.916079 ],
|
|
[ 0.65597004, 0.771831 ],
|
|
[ 0.66669285, 0.7636482 ],
|
|
[ 0.6814582 , 0.7576576 ],
|
|
[ 0.7245435 , 0.73241323],
|
|
[ 0.9371713 , 0.62184393],
|
|
[ 0.5736738 , 0.30186948],
|
|
[ 0.60240346, 0.19448838],
|
|
[ 0.6383993 , 0.21017241],
|
|
[ 0.64431435, 0.7837067 ],
|
|
[ 0.9726586 , 0.7675604 ],
|
|
[ 0.54576766, 0.18157108],
|
|
[ 0.6477745 , 0.98230904],
|
|
[ 0.5269076 , 0.34123868],
|
|
[ 0.61068684, 0.43131724],
|
|
[ 0.56792 , 1.0087004 ],
|
|
[ 0.7662271 , 0.8776794 ],
|
|
[ 0.7048996 , 0.57387614],
|
|
[ 0.7136024 , 0.9394351 ],
|
|
[ 0.8097781 , 0.56784695],
|
|
[ 0.7435453 , 0.62753886],
|
|
[ 0.85328954, 0.6578133 ],
|
|
[ 0.5835228 , 1.0854707 ],
|
|
[ 0.64810187, 0.45811343],
|
|
[ 0.82059515, 0.9304676 ],
|
|
[ 0.7494546 , 0.9966611 ],
|
|
[ 0.8015866 , 0.80400985],
|
|
[ 1.0415541 , 0.70138854],
|
|
[ 0.8809724 , 0.8228132 ],
|
|
[ 1.1396528 , 0.7657218 ],
|
|
[ 0.7798614 , 0.69881856],
|
|
[ 0.6143189 , 0.383193 ],
|
|
[ 0.56934875, 0.52867246],
|
|
[ 0.60162777, 0.54706186],
|
|
[ 0.5470082 , 0.4963955 ],
|
|
[ 0.6408297 , 0.15073723],
|
|
[ 0.7075675 , 0.12865019],
|
|
[ 0.76593757, 0.12391254],
|
|
[ 0.8212976 , 0.12768434],
|
|
[ 0.87334216, 0.14682971],
|
|
[ 0.948411 , 0.23457018],
|
|
[ 1.1936799 , 0.38651106],
|
|
[ 0.90181875, 0.30865455],
|
|
[ 0.84818983, 0.3240165 ],
|
|
[ 0.7851249 , 0.32537246],
|
|
[ 0.72658616, 0.3116911 ],
|
|
[ 0.6740513 , 0.2949461 ],
|
|
[ 0.63111407, 0.28325075],
|
|
[ 1.362823 , 0.4074953 ],
|
|
[ 0.60951644, 0.5658945 ],
|
|
[ 0.5634702 , 0.4055624 ],
|
|
[ 0.5374476 , 0.5247268 ],
|
|
[ 0.53280455, 0.5561224 ],
|
|
[ 0.5462737 , 0.5405522 ],
|
|
[ 0.6075077 , 0.58877414],
|
|
[ 0.51933056, 0.55477065],
|
|
[ 0.52143395, 0.58103496],
|
|
[ 0.62030756, 0.24758299],
|
|
[ 0.59746987, 0.2574137 ],
|
|
[ 0.5780933 , 0.2652785 ],
|
|
[ 0.8624742 , 0.2089644 ],
|
|
[ 0.8855709 , 0.20027623]], dtype=np.float32)
|
|
|
|
|
|
# import numpy as np
|
|
# import cv2
|
|
# pts = uni_landmarks_468
|
|
|
|
# res = 900
|
|
|
|
# pts -= pts.min(axis=0)
|
|
# pts /= pts.max(axis=0)
|
|
|
|
# pts *= [res, res]
|
|
# pts = pts.astype(np.int)
|
|
|
|
# img = np.zeros( (res,res,3), np.uint8 )
|
|
# wnd_name = 'asd'
|
|
|
|
# selected = [False]*len(pts)
|
|
|
|
# sel = [0, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 42, 43, 46, 52, 53, 54, 55, 56, 57, 58, 61, 62, 63, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 76, 77, 78, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 95, 96, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 117, 118, 124, 130, 132, 133, 135, 136, 138, 139, 140, 143, 144, 145, 146, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 168, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 189, 190, 191, 192, 193, 194, 199, 200, 201, 202, 204, 208, 210, 211, 212, 213, 214, 215, 221, 222, 223, 224, 225, 226, 228, 229, 230, 231, 232, 233, 243, 244, 245, 246, 247, 249, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 267, 268, 269, 270, 271, 272, 273, 276, 282, 283, 284, 285, 286, 287, 288, 291, 292, 293, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 306, 307, 308, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 324, 325, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 346, 347, 353, 359, 361, 362, 364, 365, 367, 368, 369, 372, 373, 374, 375, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 394, 395, 396, 397, 398, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 413, 414, 415, 416, 417, 418, 421, 422, 424, 428, 430, 431, 432, 433, 434, 435, 441, 442, 443, 444, 445, 446, 448, 449, 450, 451, 452, 453, 463, 464, 465, 466, 467]
|
|
|
|
# print(len(sel))
|
|
|
|
# for i in sel:
|
|
# selected[i] = True
|
|
|
|
|
|
|
|
# select_holding = False
|
|
# unselect_holding = False
|
|
# def onMouse(event, x, y, flags, _):
|
|
# global select_holding
|
|
# global unselect_holding
|
|
|
|
# if event == cv2.EVENT_LBUTTONDOWN:
|
|
# select_holding = True
|
|
# elif event == cv2.EVENT_LBUTTONUP:
|
|
# select_holding = False
|
|
# elif event == cv2.EVENT_RBUTTONDOWN:
|
|
# unselect_holding = True
|
|
# elif event == cv2.EVENT_RBUTTONUP:
|
|
# unselect_holding = False
|
|
# elif event == cv2.EVENT_MBUTTONDOWN:
|
|
|
|
# print([ i for i, x in enumerate(selected) if x == True ])
|
|
|
|
# pt_idx = np.argsort( np.linalg.norm(pts - [x,y], axis=1) )[0]
|
|
|
|
# if select_holding:
|
|
# selected[pt_idx] = True
|
|
# if unselect_holding:
|
|
# selected[pt_idx] = False
|
|
|
|
|
|
# cv2.namedWindow(wnd_name)
|
|
# cv2.setMouseCallback(wnd_name, onMouse)
|
|
|
|
# while True:
|
|
# for pt_idx, (x,y) in enumerate(pts):
|
|
# if selected[pt_idx]:
|
|
# color = (255,0,0)
|
|
# else:
|
|
# color = (255,255,255)
|
|
|
|
# cv2.circle(img, (x,y), 1, color, 1 )
|
|
|
|
# cv2.imshow(wnd_name,img)
|
|
# cv2.waitKey(5)
|
|
|
|
# import multiprocessing
|
|
# import threading
|
|
# import time
|
|
|
|
|
|
# def proc1(ev = multiprocessing.Event()):
|
|
# while True:
|
|
# ev.wait(timeout=0.001)
|
|
|
|
# # def proc2(obj : ClassWithEvent):
|
|
# # print('before wait')
|
|
# # obj.ev.wait(timeout=0.005)
|
|
# # print('after wait')
|
|
|
|
# if __name__ == '__main__':
|
|
|
|
|
|
# multiprocessing.set_start_method('spawn', force=True)
|
|
|
|
# ev = multiprocessing.Event()
|
|
# ev.set()
|
|
|
|
# p = multiprocessing.Process(target=proc1, args=(ev,), daemon=True)
|
|
|
|
# threading.Thread(target=lambda: p.start(), daemon=True).start()
|
|
# time.sleep(1.0)
|
|
|
|
# p.terminate()
|
|
# p.join()
|
|
# del p
|
|
|
|
# # p = multiprocessing.Process(target=proc2, args=(obj,), daemon=True)
|
|
# # threading.Thread(target=lambda: p.start(), daemon=True).start()
|
|
# # time.sleep(1.0)
|
|
|
|
# import code
|
|
# code.interact(local=dict(globals(), **locals()))
|