From 0ffd95f2278e860736e46f8b73f357470f5a3d91 Mon Sep 17 00:00:00 2001 From: zhangmeng <775834166@qq.com> Date: 星期三, 15 一月 2020 17:56:18 +0800 Subject: [PATCH] debug --- csrc/buz/face/tracker.cpp | 89 ++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 89 insertions(+), 0 deletions(-) diff --git a/csrc/buz/face/tracker.cpp b/csrc/buz/face/tracker.cpp new file mode 100644 index 0000000..cb2744a --- /dev/null +++ b/csrc/buz/face/tracker.cpp @@ -0,0 +1,89 @@ +#include "tracker.h" + +#include <stdio.h> +#include "THFaceTracking_i.h" + +namespace csdk_wrap{ + static THFT_Param param; + int init_face_tracker(const int tm, const int gi,const int w, const int h, + const int maxFaces, const int detinterval, const int sampleSize, + VecFunc &vec){ + param.nDeviceID = gi; + param.nImageWidth = w; + param.nImageHeight = h; + param.nMaxFaceNum = maxFaces; + param.nSampleSize = sampleSize > 0 ? sampleSize : w/2; + param.nDetectionIntervalFrame = detinterval; +printf("threads %d gi: %d size: %dx%d maxface: %d, sample: %d, interval: %d\n", + tm, gi, w, h, maxFaces, sampleSize, detinterval); + auto nNum = THFT_Create(tm, ¶m); + if(nNum != tm){ + printf("create face detector failed!\n"); + }else{ + vec.emplace_back([]{THFT_Release();}); + } + return nNum; + } + + cRECT* face_track_only(int *faceCount, const cIMAGE *img, const int chan){ + + *faceCount = 0; + + cRECT *pFaces = (cRECT*)malloc(param.nMaxFaceNum * sizeof(cRECT)); + auto nNum = THFT_FaceOnly(chan, img->data, img->width, img->height, (tagRECT*)pFaces, param.nMaxFaceNum, param.nSampleSize); + if (nNum > 0) + { + *faceCount = nNum; + }else{ + free(pFaces); + pFaces = NULL; + } + return pFaces; + } + + cFaceInfo* face_track_detect(int *faceCount, const cIMAGE *img, const int chan){ + *faceCount = 0; + + cFaceInfo* pFaceInfos = (cFaceInfo*)malloc(param.nMaxFaceNum * sizeof(cFaceInfo)); + auto nNum = THFT_FaceDetect(chan, img->data, img->width, img->height, (THFT_FaceInfo*)pFaceInfos, param.nMaxFaceNum, param.nSampleSize); + if (nNum > 0){ + *faceCount = nNum; + }else{ + free(pFaceInfos); + pFaceInfos = NULL; + } + return pFaceInfos; + } + + cFaceInfo* face_track(int *faceCount, const cIMAGE *img, const int chan){ + *faceCount = 0; + + cFaceInfo* pFaceInfos = (cFaceInfo*)malloc(param.nMaxFaceNum * sizeof(cFaceInfo)); + auto nNum = THFT_FaceTracking(chan, img->data, (THFT_FaceInfo*)pFaceInfos); + if (nNum > 0){ + *faceCount = nNum; + }else{ + free(pFaceInfos); + pFaceInfos = NULL; + } + return pFaceInfos; + } + + //THFACETRACKING_API int THFT_Reset(short nChannelID, THFT_Param* pParam); + int face_track_resize(const int chan, const int w, const int h){ + THFT_Param tmpParam; + tmpParam.nDeviceID = param.nDeviceID; + tmpParam.nImageWidth = w; + tmpParam.nImageHeight = h; + tmpParam.nMaxFaceNum = param.nMaxFaceNum; + tmpParam.nSampleSize = param.nSampleSize; + tmpParam.nDetectionIntervalFrame = param.nDetectionIntervalFrame; + + printf("chan %d size: %dx%d", chan, w, h); + + auto flag = THFT_Reset(chan, &tmpParam); + + return flag; + } + +} \ No newline at end of file -- Gitblit v1.8.0