From f5ad66e7cfcc014859ef6bcb3573a41fa2cb689c Mon Sep 17 00:00:00 2001 From: pansen <pansen626@sina.com> Date: 星期三, 19 十二月 2018 18:10:24 +0800 Subject: [PATCH] save code --- QiaoJiaSystem/StructureApp/FaceTrackingWrapper.cpp | 38 +++++++++++++++++++++++++++++++++++--- 1 files changed, 35 insertions(+), 3 deletions(-) diff --git a/QiaoJiaSystem/testCodeMod/FaceTrackingWrapper.cpp b/QiaoJiaSystem/StructureApp/FaceTrackingWrapper.cpp similarity index 70% rename from QiaoJiaSystem/testCodeMod/FaceTrackingWrapper.cpp rename to QiaoJiaSystem/StructureApp/FaceTrackingWrapper.cpp index bd334b6..90d75ab 100644 --- a/QiaoJiaSystem/testCodeMod/FaceTrackingWrapper.cpp +++ b/QiaoJiaSystem/StructureApp/FaceTrackingWrapper.cpp @@ -5,6 +5,37 @@ #include "FaceTrackingWrapper.h" #include "Debug.h" +#include <FaceDetectServer/rpc/FaceServer.h> +#include <opencv2/opencv.hpp> + +static FaceTrackingWrapper g_faceTrackingWrapper; +static std::map<std::string, int> g_channelCache; + +static ::FaceDetect::Faces faceTrackingFunc(int channel, cv::Mat &image) { + FaceDetect::Faces faces; + int channel = 0; + 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 = facesPos[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"); + } + +} + FaceTrackingWrapper::FaceTrackingWrapper() { @@ -45,11 +76,12 @@ * @param image * @return */ -std::vector<BasicFace::FaceDetectResult> FaceTrackingWrapper::detectFace(BasicFace::FaceImage image) { +std::vector<BasicFace::FaceDetectResult> FaceTrackingWrapper::detectFace(const BasicFace::FaceImage &image) { return vector<BasicFace::FaceDetectResult>(); } -std::vector<BasicFace::FaceDetectResult> FaceTrackingWrapper::trackingFace(int channel, BasicFace::FaceImage image) { +std::vector<BasicFace::FaceDetectResult> +FaceTrackingWrapper::trackingFace(int channel, const BasicFace::FaceImage &image) { vector<BasicFace::FaceDetectResult> results; // ClockTimer ct("CasiaFaceWapper::detectFace"); if (channel == -1) { @@ -90,7 +122,7 @@ * @param image * @return */ -vector<BasicFace::FaceFeatureResult> FaceTrackingWrapper::extractFace(BasicFace::FaceImage image) { +vector<BasicFace::FaceFeatureResult> FaceTrackingWrapper::extractFace(const BasicFace::FaceImage &image) { return vector<BasicFace::FaceFeatureResult>(); } -- Gitblit v1.8.0