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)
|