From 9d1c4cec973ed6395e25a8c0fe5a8a551f30e146 Mon Sep 17 00:00:00 2001
From: pansen <pansen626@sina.com>
Date: 星期三, 26 十二月 2018 13:59:35 +0800
Subject: [PATCH] save code

---
 QiaoJiaSystem/StructureApp/FaceRpcElement.cpp |   25 +++++++++++++++++++------
 1 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/QiaoJiaSystem/StructureApp/FaceRpcElement.cpp b/QiaoJiaSystem/StructureApp/FaceRpcElement.cpp
index 6f2cdd1..3bc1d6c 100644
--- a/QiaoJiaSystem/StructureApp/FaceRpcElement.cpp
+++ b/QiaoJiaSystem/StructureApp/FaceRpcElement.cpp
@@ -4,6 +4,7 @@
 #include <QtCore/QString>
 #include <basic/timer_counter/Clocktimer.h>
 #include <basic/util/opencv/CvUtil.h>
+#include "FaceTrackingWrapper.h"
 
 #define GETSCORE(IDENT) appPref.getFloatData(IDENT) == -1 ? 95 : appPref.getFloatData(IDENT);
 
@@ -37,15 +38,18 @@
     sharedMemory(nullptr), trackingTrigger(nullptr) {
     sharedMemory = new QSharedMemory(QString(shareMemoryName.c_str()));
     if (!sharedMemory->create(4608 * 2592 * 4)) {
-        sharedMemory->attach();
+        sharedMemory->
+
+            attach();
         DBG("size is " << sharedMemory->size());
     }
 
 //    string t_camIdex = getProperty("dev_id");
-    //#todo
+//#todo
     string t_camIdex;
     if (shareMemoryName.find("/")) {
-        string_replace(shareMemoryName, "//", "/");
+        string_replace(shareMemoryName,
+                       "//", "/");
         auto dev_pos = shareMemoryName.find("/cut/") + 5;
         auto ch_pos = shareMemoryName.find("/", dev_pos) + 1;
         auto str_device_id = shareMemoryName.substr(dev_pos, ch_pos - dev_pos - 1);
@@ -62,6 +66,7 @@
     t_score = t_score / 100;
 
     trackingTrigger = new TrackingTrigger(t_score);
+    m_trackingRet = appPref.getIntData("FaceTrackingRet");
 }
 
 FaceRpcElement::~FaceRpcElement() {
@@ -86,9 +91,15 @@
     try {
         auto server = rpcClient.getServer();
         if (!server) ERR("server is null");
-        faces = server->faceDetect(image.cols, image.rows, sharedMemory->key().toStdString());
+
+        if (m_trackingRet) {
+//            #todo xxxx.detectFace
+            faces = faceTrackingFunc(m_channel, image);
+        } else {
+            faces = server->faceDetect(image.cols, image.rows, sharedMemory->key().toStdString());
+        }
 //        DBG("faces.size  " << faces.size());
-        for (auto face: faces) {
+        for (auto &face: faces) {
             ::FaceDetect::RECT &rect = face.rcFace;
             ScoredRect scoredRect;
             int x = face.rcFace.left;
@@ -98,7 +109,9 @@
             scoredRect.rect = {x, y, w, h};
             scoredRect.score = (float) face.fAngle.confidence;
 
-            if (trackingTrigger->triggerOnce(scoredRect)) {
+            bool newFaceRet = m_trackingRet ? trackingTrigger->triggerOnce(scoredRect, face.pfaceId)
+                                            : trackingTrigger->triggerOnce(scoredRect);
+            if (newFaceRet) {
                 auto property = server->faceProperty(image.cols, image.rows, face, sharedMemory->key().toStdString());
                 trackingTrigger->getLastRect().properties["id"] = to_string(scoredRect.id);
                 trackingTrigger->getLastRect().properties["age"] = to_string(property.age);

--
Gitblit v1.8.0