派生自 development/c++

xuxiuxi
2019-03-04 93fcc2eb2db5038ca1944acde9f4c8b751aca930
QiaoJiaSystem/StructureApp/FaceRpcElement.cpp
@@ -39,7 +39,8 @@
    sharedMemory(nullptr),
    trackingTrigger(nullptr),
    m_sdkRule(rule),
    m_bIsMask(true)
    m_bIsMask(true),
    m_bSetWH(false)
{
    sharedMemory = new QSharedMemory(QString(shareMemoryName.c_str()));
    if (!sharedMemory->create(4608 * 2592 * 4)) {
@@ -68,7 +69,7 @@
    t_score = t_score / 100;
    trackingTrigger = new TrackingTrigger(t_score);
    setMask(m_sdkRule.strAreas.toStdString());
//    setMask(m_sdkRule.strAreas.toStdString());
}
FaceRpcElement::~FaceRpcElement() {
@@ -81,6 +82,7 @@
}
void FaceRpcElement::threadFunc() {
    INFO("MYH Run Here");
//    ClockTimer ct("FaceRpcElement::threadFunc");
//    {
//
@@ -88,7 +90,10 @@
//        cv::imwrite(string1, image);
//    }
    if(!isInWeek(m_sdkRule.weekRuleVec))
    {
        ERR("In Week");
        return;
    }
    triggerMats.clear();
    triggerFaces.clear();
    triggerScoredRects.clear();
@@ -109,6 +114,7 @@
            QPoint center = re.center();
            if(m_bIsMask && !mPolygon.containsPoint(center,Qt::OddEvenFill))
            {
                ERR("m_bIsMask :"<<m_bIsMask)
                return;
            }
            scoredRect.rect = {x, y, w, h};
@@ -123,14 +129,21 @@
                trackingTrigger->getLastRect().properties["smile"] = to_string(property.smile_level);
                trackingTrigger->getLastRect().properties["race"] = to_string(property.race);
                trackingTrigger->getLastRect().properties["time"] = getProperty("time");
                trackingTrigger->getLastRect().properties["detectscore"] = scoredRect.score;
                trackingTrigger->getLastRect().properties["imgKey"] = getProperty("imgKey");
                INFO("FaceRpcElement SaveToES: "<<getProperty("imgKey"));
                triggerFaces.push_back(face);
                triggerMats.push_back(image(
                    CvUtil::zoomRectEqual(scoredRect.rect, 1.5, 1.5) & cv::Rect(0, 0, image.cols, image.rows)).clone());
                triggerScoredRects.push_back(trackingTrigger->getLastRect());
            } else {
                INFO("No Face Find: "<<getProperty("imgKey"));
//                DBG("trackingTrigger->triggerOnce(scoredRect) is false  ");
            }
        }
        if(faces.empty())
        {
            INFO("No Face Find: "<<getProperty("imgKey"));
        }
        trackingTrigger->triggerLine();
        //        DBG("faces.size  " << faces.size());
@@ -177,6 +190,11 @@
        image = cv::Mat(value.rows, value.cols, CV_8UC3, sharedMemory->data());
    }
    value.copyTo(image);
    if(!m_bSetWH)
    {
        setMask(m_sdkRule.strAreas.toStdString());
        m_bSetWH=true;
    }
}
bool FaceRpcElement::getTriggerState() const {
@@ -190,13 +208,17 @@
        m_bIsMask=false;
        return;//do not detect
    }
    float sizeW=(float)appPref.getIntData(m_sdkRule.strCamId.toStdString()+"width")/480;
    float sizeH=(float)appPref.getIntData(m_sdkRule.strCamId.toStdString()+"height")/270;
    for(int i = 0;i < arrayAreas.size();++i)
    {
        QJsonValue jsonValue = arrayAreas[i];
        QJsonObject obj = jsonValue.toObject();
        int x = obj.value("x").toDouble()*4;
        int y = obj.value("y").toDouble()*4;
        int x = obj.value("x").toDouble() *sizeW ;
        int y = obj.value("y").toDouble() *sizeH;
        mPolygon<<(QPoint(x,y));
        DBG("width="<<sizeW);
        DBG("height="<<sizeH);
    }
}