pansen
2018-12-19 9d1c4cec973ed6395e25a8c0fe5a8a551f30e146
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);