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