import platform import ctypes, ctypes.util from ctypes import * from numpy.ctypeslib import ndpointer import sys import os if platform.uname()[0] == 'Windows': dll_path = os.path.abspath(os.path.dirname(__file__)) + '/C/face_util.dll' elif platform.uname()[0] == 'Linux': dll_path = os.path.abspath(os.path.dirname(__file__)) + '/C/libFaceUtil.so' else: print("Invalid OS") sys.exit(1) face_util_engine = cdll.LoadLibrary(dll_path) align_vertical = face_util_engine.align_vertical align_vertical.argtypes = [ndpointer(ctypes.c_ubyte, flags='C_CONTIGUOUS'), ctypes.c_int32, ctypes.c_int32, ndpointer(ctypes.c_ubyte, flags='C_CONTIGUOUS'), ctypes.c_int32, ctypes.c_int32, ctypes.c_int32, ctypes.POINTER(ctypes.c_float), ctypes.c_float, ctypes.c_float, ctypes.c_float] align_vertical.restype = ctypes.c_int32 getPose = face_util_engine.getPose getPose.argtypes = [ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.POINTER(ctypes.c_float), ctypes.c_int32, ctypes.POINTER(ctypes.c_float), ctypes.POINTER(ctypes.c_float), ctypes.POINTER(ctypes.c_float)] getPose.restype = ctypes.c_int32 getPose68 = face_util_engine.getPose68 getPose68.argtypes = [ctypes.c_float, ctypes.c_float, ctypes.c_float, ctypes.POINTER(ctypes.c_float), ctypes.c_int32, ctypes.POINTER(ctypes.c_float), ctypes.POINTER(ctypes.c_float), ctypes.POINTER(ctypes.c_float)] getPose68.restype = ctypes.c_int32