派生自 development/c++

pansen
2019-03-07 d3b7bbe7102cd089680a828f5d8f6402c8cf6342
QiaoJiaSystem/StructureApp/FaceExtractElement.cpp
@@ -37,8 +37,8 @@
    faceSearchRpcClient(appPref.getStringData("faceSear.proxy"), appPref.getStringData("faceSear.ip"),
                        appPref.getIntData("faceSear.port"), "tcp"),
//    faceSearchRpcClient("faceCmServer", "", 10004, "tcp")
    m_sdkRule(rule)
{
    m_sdkRule(rule),
    m_rpcClient("RtspAnalysServer", "127.0.0.1", appPref.getIntData("RpcServerPort"), "tcp") {
    sharedMemory = new QSharedMemory(QString(shareMemoryName.c_str()));
    if (!sharedMemory->create(4608 * 2592 * 4)) {
        sharedMemory->attach();
@@ -61,10 +61,14 @@
}
void FaceExtractElement::timerFunc() {
    INFO("MYH Run Here");
    std::vector<FaceToExtract> faceExtractQueueTmp;
    {
        std::lock_guard<std::mutex> lg(imageQueueMutex);
        if (faceExtractQueue.empty())return;
        if (faceExtractQueue.empty()) {
            ERR("faceExtractQueue.empty ");
            return;
        }
        faceExtractQueueTmp.swap(faceExtractQueue);
        faceExtractQueue.clear();
    }
@@ -100,7 +104,7 @@
//                    cv::imwrite(string1, image);
//                }
                if (feature.empty()) {
                    ERR("feature is empty");
                    INFO("No Face Find: " << getProperty("imgKey"));
                    continue;
                }
                features.clear();
@@ -113,12 +117,15 @@
                    CvUtil::cvMat2Buffer(faceExtractQueueTmp[i].faceImages[j], buffer);
                    std::string strImgUrlTmp = "";
                    fdfsClient->fastFds->uploadFile(buffer, strImgUrlTmp, "jpg");
                  //  strImgUrl.append(fdfsClient->fastFds->getIp() + "/" + strImgUrlTmp);
                    DBG("strImgUrlTmp="<<strImgUrlTmp);
                    //  strImgUrl.append(fdfsClient->fastFds->getIp() + "/" + strImgUrlTmp);
                    DBG("strImgUrlTmp=" << strImgUrlTmp);
                    strImgUrl.clear();
                    strImgUrl = strImgUrlTmp;
//                    strImgUrl.append("/").append(strImgUrlTmp);
                    fdfsClient->rwLock.unlock();
                } else {
                    strImgUrl = "";
                    ERR("fdfsClient is nullptr ???");
                }
                //拼接json
@@ -134,20 +141,20 @@
                //#在对比中添加特征值
                t_json["FaceFeature"] = "base64";
                t_json["personId"] = "wait todo";//关联底库人员id,人脸id
                t_json["BaseName"] = "wait todo";//关联底库表名
                t_json["personId"] = "";//关联底库人员id,人脸id
                t_json["BaseName"] = "";//关联底库表名
                //#end
//                t_json["likePer"] = faceExtractQueueTmp[i].scoredRects[j].score;//人员相似度 Score
                t_json["likeDate"] = AppUtil::getTimeSecString();//"2018-01-01 01:01:01";//比较时间
                t_json["picName"] = "wait todo";
                t_json["picName"] = "";
                t_json["personPicUrl"] = "wait todo";//人员图片 store
                t_json["personPicUrl"] = "";//人员图片 store
                t_json["picAddress"] = getProperty("str_addr");//抓拍地址
                  DBG("picAddress="<< t_json["picAddress"] );
                t_json["picMaxUrl"] = "wait todo";//大图路径
                t_json["picLocalUrl"] = "wait todo";//本地路径
                DBG("picAddress=" << t_json["picAddress"]);
                t_json["picMaxUrl"] = "";//大图路径
                t_json["picLocalUrl"] = "";//本地路径
                t_json["picSmUrl"] = strImgUrl;//人员抓小图
                //#todo
                t_json["picDate"] = faceExtractQueueTmp[i].scoredRects[j].properties["time"];
@@ -155,8 +162,10 @@
//                DBG("timeC ::::B" << t_json["picDate"m_bIsMask].asString());
//                t_json["picDate"] = AppUtil::getTimeSecString();
                t_json["content"] = "wait todo";
                t_json["viType"] = "1";//只有4种类型 1:personface 2:personbody 3:car 4:bicycle 5:none 未知类型
                t_json["content"] = "";
                //t_json["viType"] = "2";//只有4种类型 1:personface 2:personbody 3:car 4:bicycle 5:none 未知类型
                t_json["sdkType"] = std::to_string(
                    m_sdkRule.nSdkType);//只有4种类型 1:personface 2:personbody 3:car 4:bicycle 5:none 未知类型
                t_json["personIsHub"] = "4";//1: 报警  2: 可疑  3: 安全  4: 未知
@@ -211,6 +220,22 @@
                t_json["indeviceid"] = appPref.getStringData("fxDevID");
                t_json["indevicename"] = appPref.getStringData("fxDevNAME");
                std::string strImageKey = faceExtractQueueTmp[i].scoredRects[j].properties["imgKey"];
                INFO("SaveImageKey To ES: " << strImageKey);
                t_json["imgKey"] = strImageKey;
                try {
                    auto server = m_rpcClient.getServer();
                    if (!server) {
                        ERR("server is null");
                        //return;
                    }
                    INFO("Record Video " << strImageKey);
                    server->recordVideo(strImageKey);
                } catch (std::exception &e) {
                    ERR("Record Video Err: " << strImageKey << "   Message: " << e.what());
                    //return;
                }
                auto faceSearchServer = faceSearchRpcClient.getServer();
                if (!faceSearchServer) {
                    ERR("faceSearchServer is null");