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