From 6099b84752369a1d6c325fa3b419a6aa52d4366a Mon Sep 17 00:00:00 2001
From: zhangmeng <775834166@qq.com>
Date: 星期五, 15 十一月 2019 14:57:42 +0800
Subject: [PATCH] updte
---
csrc/buz/face/detector.cpp | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 60 insertions(+), 0 deletions(-)
diff --git a/csrc/buz/face/detector.cpp b/csrc/buz/face/detector.cpp
new file mode 100644
index 0000000..e191ea8
--- /dev/null
+++ b/csrc/buz/face/detector.cpp
@@ -0,0 +1,60 @@
+#include "detector.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "THFaceImage_i.h"
+
+#include "csdk_struct.h"
+
+namespace csdk_wrap
+{
+ int init_face_detector(const int tm, const int gi, const int minFaces, const int rollAngle,
+ VecFunc &vec){
+ int ret = 0;
+ if (gi < 0) {
+ THFI_Param *param = new THFI_Param[tm];
+ ret = THFI_Create(tm, param);
+ delete[] param;
+ } else {
+ THFI_Param_Ex *param = new THFI_Param_Ex[tm];
+ THFI_Param detParam;
+ detParam.nMinFaceSize = minFaces;
+ detParam.nRollAngle = rollAngle;
+ for (int i = 0; i < tm; i++) {
+ param[i].tp = detParam;
+ param[i].nDeviceID = gi;
+ }
+ ret = THFI_Create_Ex(tm, param);
+ delete[] param;
+ }
+ if(ret != tm){
+ printf("create face detector failed!\n");
+ }else{
+ vec.emplace_back([]{THFI_Release();});
+ }
+
+ return ret;
+ }
+
+ cFacePos* face_detect(int *faceCount, const cIMAGE *img, const int channel){
+ if(channel < 0 || !img){
+ return NULL;
+ }
+ cFacePos *fpos = NULL;
+ ::THFI_FacePos facesPos[30];
+ int faceNum = THFI_DetectFace(channel, (BYTE*)(img->data), 24, img->width, img->height, facesPos, 30);
+
+ if (faceNum > 0) {
+ fpos = (cFacePos*)malloc(faceNum * sizeof(cFacePos));
+ *faceCount = faceNum;
+ memcpy(fpos, facesPos, sizeof(THFI_FacePos) * faceNum);
+
+ }else{
+ // printf ("no face detected\n");
+ }
+ return fpos;
+ }
+
+} // csdk_wrap
--
Gitblit v1.8.0