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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
| from . import face_dll from . import face_class from ctypes import * import cv2 from io import BytesIO
Handle = c_void_p() c_ubyte_p = POINTER(c_ubyte)
def JH(appkey, sdkey): ret = face_dll.jihuo(appkey, sdkey) return ret
def CSH(): ret = face_dll.chushihua(0xFFFFFFFF, 0x1, 16, 50, 5, byref(Handle)) return ret, Handle
def LoadImg(im): img = cv2.imread(im.filepath) sp = img.shape img = cv2.resize(img, (sp[1] // 4 * 4, sp[0] // 4 * 4)) sp = img.shape im.data = img im.width = sp[1] im.height = sp[0] return im
def LoadWebImg(img): print(img) sp = img.shape im = cv2.resize(img, (sp[1] // 4 * 4, sp[0] // 4 * 4)) sp = im.shape img.data = im img.width = sp[1] img.height = sp[0] return img
def RLSB(im): faces = face_class.ASF_MultiFaceInfo() img = im.data imgby = bytes(im.data) imgcuby = cast(imgby, c_ubyte_p) ret = face_dll.shibie( Handle, im.width, im.height, 0x201, imgcuby, byref(faces)) return ret, faces
def showimg(im, faces): print('facenum is:', faces.faceNum) for i in range(0, faces.faceNum): ra = faces.faceRect[i] cv2.rectangle(im.data, (ra.left1, ra.top1), (ra.right1, ra.bottom1), (255, 0, 0,), 2) cv2.imshow('faces', im.data) cv2.waitKey(0)
def RLTZ(im, ft): detectedFaces = face_class.ASF_FaceFeature() img = im.data imgby = bytes(im.data) imgcuby = cast(imgby, c_ubyte_p) ret = face_dll.tezheng( Handle, im.width, im.height, 0x201, imgcuby, ft, byref(detectedFaces)) if ret == 0: retz = face_class.ASF_FaceFeature() retz.featureSize = detectedFaces.featureSize retz.feature = face_dll.malloc(detectedFaces.featureSize) face_dll.memcpy( retz.feature, detectedFaces.feature, detectedFaces.featureSize) return ret, retz else: return ret
def BD(tz1, tz2): jg = c_float() ret = face_dll.bidui(Handle, tz1, tz2, byref(jg)) return ret, jg.value
def writeFTFile(feature, filepath): f = BytesIO(string_at(feature.feature, feature.featureSize)) a = open(filepath, 'wb') a.write(f.getvalue()) a.close()
def getsingleface(singleface, index): ft = face_class.ASF_SingleFaceInfo() ra = singleface.faceRect[index] ft.faceRect.left1 = ra.left1 ft.faceRect.right1 = ra.right1 ft.faceRect.top1 = ra.top1 ft.faceRect.bottom1 = ra.bottom1 ft.faceOrient = singleface.faceOrient[index] return ft
def ftfromfile(filepath): fas = face_class.ASF_FaceFeature() f = open('./1.dat', 'rb') b = f.read() f.close() fas.featureSize = b.__len__() fas.feature = face_dll.malloc(fas.featureSize) face_dll.memcpy(fas.feature, b, fas.featureSize) return fas
|