#include "face_sdk.h" #include #include using namespace cv; using namespace std; void* FE_Create(const char* model, const char* weight); int main(int argc, char* argv[]) { void* det_handle = THFI_Create("../models/face_det/detect_v1.0.model", "../lic/license.lic"); void* pos_handle = THFacialPosCreate("../models/face_landmark/landmark_v1.3.model", "../lic/license.lic"); void* fea_handle = FE_Create("../models/face_extract/recognize_v1.7.model", "../lic/license.lic"); Mat mat = imread(argv[1]); Mat result = mat.clone(); FaceRect faceRect = { 0 }; vector landmarks; char feature[1024] = { 0 }; fstream fout(argv[2], ios::out); // face detect int faceNum = THFI_DetectFace(det_handle, mat, 1, &faceRect); printf("faceNum: %d left: %f, top: %f, right: %f, bottom: %f \r\n", faceNum, faceRect.left, faceRect.top, faceRect.right, faceRect.bottom); if (faceNum) { fout << "{\"detection out\":[[\"score\"," << faceRect.score << "],[\"bbox\"," << faceRect.left << "," << faceRect.top << "," << faceRect.right << "," << faceRect.bottom << "]]"; // landmark int posNum = THFacialPosExecute(pos_handle, mat, &faceRect, &landmarks); if (posNum > 0) fout << ",\"landmark\":" << "[[" << landmarks[0]; printf("posNum: %d\r\n", posNum); for (int i = 1; i < posNum; ++i) { fout << "," << landmarks[i]; } fout << "]]"; printf("Extract...\r\n"); // feature extract int feaNum = FE_Execute(fea_handle, mat, &landmarks, (char*)feature); printf("feaNum: %d\r\n", feaNum); fout << ",\"feature\":[[" << ((short*)feature)[0]; for (int i = 1; i < feaNum; ++i) { fout << "," << ((short*)feature)[i]; } fout << "]]}"; } fout.close(); // imwrite(argv[2], result); THFacilalPosFree(pos_handle); THFI_Free(det_handle); FE_Free(fea_handle); return 0; }