派生自 development/c++

pansen
2019-03-05 ed223aee5fe5f3b222488549597976f34c679c3d
QiaoJiaSystem/StructureApp/FaceRpcElement.cpp
@@ -6,6 +6,7 @@
#include <basic/util/opencv/CvUtil.h>
#include <QJsonDocument>
#include <QJsonObject>
#define GETSCORE(IDENT) appPref.getFloatData(IDENT) == -1 ? 95 : appPref.getFloatData(IDENT);
//************************************
@@ -40,8 +41,7 @@
    trackingTrigger(nullptr),
    m_sdkRule(rule),
    m_bIsMask(true),
    m_bSetWH(false)
{
    m_bSetWH(false) {
    sharedMemory = new QSharedMemory(QString(shareMemoryName.c_str()));
    if (!sharedMemory->create(4608 * 2592 * 4)) {
        sharedMemory->attach();
@@ -50,21 +50,21 @@
//    string t_camIdex = getProperty("dev_id");
    //#todo
    string t_camIdex;
    if (shareMemoryName.find("/")) {
        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);
        auto str_ch_id = shareMemoryName.substr(ch_pos, shareMemoryName.find("/", ch_pos) - ch_pos);
        t_camIdex.append(str_device_id).append(str_ch_id);
    } else {
        t_camIdex = shareMemoryName.substr(0, shareMemoryName.rfind("faceRpc"));
    }
//    string t_camIdex;
//    if (shareMemoryName.find("/")) {
//        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);
//        auto str_ch_id = shareMemoryName.substr(ch_pos, shareMemoryName.find("/", ch_pos) - ch_pos);
//        t_camIdex.append(str_device_id).append(str_ch_id);
//    } else {
//        t_camIdex = shareMemoryName.substr(0, shareMemoryName.rfind("faceRpc"));
//    }
    float t_score = m_sdkRule.nQuality;
    DBG(" TESTCODE  getValue" << t_camIdex << "  " << t_score << " " << t_score / 100);
    DBG(" TESTCODE  getValue" << shareMemoryName << "  " << t_score << " " << t_score / 100);
    t_score = t_score / 100;
@@ -89,8 +89,7 @@
//        string string1(AppUtil::getTimeString() + "-ff2" + getProperty("time") + ".jpg");
//        cv::imwrite(string1, image);
//    }
    if(!isInWeek(m_sdkRule.weekRuleVec))
    {
    if (!isInWeek(m_sdkRule.weekRuleVec)) {
        ERR("In Week");
        return;
    }
@@ -112,8 +111,7 @@
            int h = face.rcFace.bottom - face.rcFace.top;
            QRect re(x,y,w,h);
            QPoint center = re.center();
            if(m_bIsMask && !mPolygon.containsPoint(center,Qt::OddEvenFill))
            {
            if (m_bIsMask && !mPolygon.containsPoint(center, Qt::OddEvenFill)) {
                ERR("m_bIsMask :"<<m_bIsMask)
                return;
            }
@@ -141,8 +139,7 @@
//                DBG("trackingTrigger->triggerOnce(scoredRect) is false  ");
            }
        }
        if(faces.empty())
        {
        if (faces.empty()) {
            INFO("No Face Find: "<<getProperty("imgKey"));
        }
        trackingTrigger->triggerLine();
@@ -190,8 +187,7 @@
        image = cv::Mat(value.rows, value.cols, CV_8UC3, sharedMemory->data());
    }
    value.copyTo(image);
    if(!m_bSetWH)
    {
    if (!m_bSetWH) {
        setMask(m_sdkRule.strAreas.toStdString());
        m_bSetWH=true;
    }
@@ -200,18 +196,16 @@
bool FaceRpcElement::getTriggerState() const {
    return m_triggerElement.getTriggerState();
}
void FaceRpcElement::setMask(std::string mask)
{
void FaceRpcElement::setMask(std::string mask) {
    QJsonArray arrayAreas = getJsonArrayFromQString(QString::fromStdString(mask));
    if(arrayAreas.isEmpty())
    {
    if (arrayAreas.isEmpty()) {
        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)
    {
    for (int i = 0; i < arrayAreas.size(); ++i) {
        QJsonValue jsonValue = arrayAreas[i];
        QJsonObject obj = jsonValue.toObject();
        int x = obj.value("x").toDouble() *sizeW ;
@@ -222,8 +216,8 @@
    }
}
QJsonArray FaceRpcElement::getJsonArrayFromQString(const QString& strJson)
{
QJsonArray FaceRpcElement::getJsonArrayFromQString(const QString &strJson) {
    QJsonDocument jsonDocument = QJsonDocument::fromJson(strJson.toLocal8Bit());
    if( jsonDocument.isNull() ){
        DBG("please check the string"<< strJson.toStdString());
@@ -232,17 +226,14 @@
    QJsonArray jsonArray = jsonDocument.array();
    return jsonArray;
}
bool FaceRpcElement::isInWeek(const std::vector<LActRuleWeekRecord>& ruleWeek)
{
bool FaceRpcElement::isInWeek(const std::vector<LActRuleWeekRecord> &ruleWeek) {
    int nWeek = QDate::currentDate().dayOfWeek();
    for(int i = 0;i < ruleWeek.size();++i)
    {
        if(ruleWeek[i].m_nType == nWeek)
        {
    for (int i = 0; i < ruleWeek.size(); ++i) {
        if (ruleWeek[i].m_nType == nWeek) {
            QString strCurrent = QDateTime::currentDateTime().toString("hh:mm");
            if(strCurrent >= ruleWeek[i].m_strBegin && strCurrent <= ruleWeek[i].m_strEnd)
            {
            if (strCurrent >= ruleWeek[i].m_strBegin && strCurrent <= ruleWeek[i].m_strEnd) {
               return true;
            }
        }