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