File size: 653 Bytes
901e379
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import numpy as np
from numpy.ctypeslib import as_ctypes_type
from face_util.faceutil import getPose68
import ctypes

def get_face_pose(box, landmark):
    fw = box[2] - box[0]
    fh = box[3] - box[1]
    sz = pow(fw * fh, 0.5)
    cx = (box[2] + box[0]) / 2
    cy = (box[3] + box[1]) / 2
    x1 = cx - sz / 2
    y1 = cy - sz / 2

    rx = ctypes.c_float(0)
    ry = ctypes.c_float(0)
    rz = ctypes.c_float(0)

    landmark_vec = (ctypes.c_float * len(landmark))(*landmark)
    getPose68(x1, y1, sz, landmark_vec, 68, ctypes.pointer(rx), ctypes.pointer(ry), ctypes.pointer(rz))
    return np.array([rx.value, ry.value, rz.value], dtype=np.float32)