pansen
2018-12-19 6495701d221972e7c780415ab1ba4c092f669dfa
QiaoJiaSystem/StructureApp/FaceTrackingWrapper.h
@@ -11,11 +11,13 @@
#include <sys/time.h>
#include <time.h>
#include <list>
#include <basic/debug/Debug.h>
#include <opencv2/opencv.hpp>
#include <FiStdDefEx.h>
#include <THFaceTracking_i.h>
#include <FaceDetectServer/rpc/FaceServer.h>
#include "FaceDefine.h"
@@ -52,5 +54,30 @@
//    std::map<int, ObjectList> m_objListCache;
};
static FaceTrackingWrapper g_faceTrackingWrapper;
static std::map<std::string, int> g_channelCache;
static ::FaceDetect::Faces faceTrackingFunc(int channel, cv::Mat &image) {
    FaceDetect::Faces faces;
    BasicFace::FaceImage faceImage{image.cols, image.rows, image.step, image.data};
    THFT_FaceInfo facePos[MAX_DETECT_FACE];
    int faceNum = THFT_FaceTracking(channel, image.data, facePos);
    if (faceNum > 0) {
        for (int i = 0; i < faceNum; i++) {
            FaceDetect::FacePos face;
            auto &pos = facePos[i];
            memcpy(&face, &pos, sizeof(pos) - sizeof(pos.pFacialData) - sizeof(pos.nFaceID));
            face.pFacialData.resize(sizeof(pos.pFacialData));
            memcpy(face.pFacialData.data(), pos.pFacialData, sizeof(pos.pFacialData));
            face.pfaceId = pos.nFaceID;
//                DBG(face.fAngle.confidence);
            faces.push_back(face);
        }
    } else {
        DBG("Face num is 0");
    }
}
#endif //TESTCODE_FACETRACKINGWRAPPER_H