From 4001288af80a5e07bb96dd2a7d41d7cb0052a560 Mon Sep 17 00:00:00 2001
From: pansen <pansen626@sina.com>
Date: 星期三, 26 十二月 2018 14:01:59 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/feature_addPersonTracking' into feature_addPersonTracking
---
QiaoJiaSystem/StructureApp/FaceRpcElement.cpp | 28 +++++++++++++++++++++-------
1 files changed, 21 insertions(+), 7 deletions(-)
diff --git a/QiaoJiaSystem/StructureApp/FaceRpcElement.cpp b/QiaoJiaSystem/StructureApp/FaceRpcElement.cpp
index ccee428..d1ed983 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);
@@ -32,20 +33,23 @@
FaceRpcElement::FaceRpcElement(string shareMemoryName) :
//#todo
rpcClient(appPref.getStringData("faceDete.proxy"), appPref.getStringData("faceDete.ip"),
- appPref.getIntData("faceDete.port"), "tcp"), m_triggerElement(0, 50),
+ appPref.getIntData("faceDete.port"), "tcp"), m_triggerElement(0, 0),
// rpcClient("faceServer","",10002,"tcp"),
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,9 @@
t_score = t_score / 100;
trackingTrigger = new TrackingTrigger(t_score);
+ m_trackingRet = appPref.getIntData("FaceTrackingRet");
+//#todo get key
+// m_channel = g_channelCache.find()
}
FaceRpcElement::~FaceRpcElement() {
@@ -86,9 +93,14 @@
try {
auto server = rpcClient.getServer();
if (!server) ERR("server is null");
- faces = server->faceDetect(image.cols, image.rows, sharedMemory->key().toStdString());
+
+ if (m_trackingRet) {
+ 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 +110,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