| | |
| | | PipeElement(true), |
| | | trackingTrigger(nullptr), |
| | | mRealNum(0), |
| | | m_triggerElement(0, rule.nTriggerDelay * 1000 * 1000), |
| | | m_triggerElement(rule.nTriggerDelay*8,0), |
| | | pManagerEsDB(nullptr), |
| | | npts(0) { |
| | | m_bIsMask(true) |
| | | { |
| | | |
| | | pManagerEsDB = new EsDBTool(appPref.getStringData("ipAdd"), appPref.getIntData("ipPort")); |
| | | } |
| | |
| | | |
| | | void PerimeterElement::threadFunc() { |
| | | |
| | | // ClockTimer ct("PerimeterElement::threadFunc"); |
| | | if (!isInWeek(m_sdkRule.weekRuleVec)) |
| | | return; |
| | | int num = 0; |
| | |
| | | |
| | | QRect rect(obj.rect.x, obj.rect.y, obj.rect.width, obj.rect.height); |
| | | QPoint center = rect.center(); |
| | | if (mPolygon.containsPoint(center, Qt::OddEvenFill)) { |
| | | if (mPolygon.containsPoint(center, Qt::OddEvenFill) || !m_bIsMask) { |
| | | m_recVec.push_back(obj.rect); |
| | | if (picDate.empty()) { |
| | | picDate = obj.properties["time"]; |
| | |
| | | |
| | | |
| | | } |
| | | else |
| | | { |
| | | // DBG("id="<< obj.properties["id"]<<" no containts x="<<rect.center().x()<<" y="<<rect.center().y()); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | switch (m_sdkRule.nSdkType) { |
| | | case PerimeterSdk: |
| | | state = num > 0 && num != mRealNum; |
| | | state = num > 0 ; |
| | | |
| | | |
| | | break; |
| | | case CrowdSdk: |
| | | state = num > m_sdkRule.nAlarmNumLowerLimit && num != mRealNum; |
| | | state = num > m_sdkRule.nAlarmNumLowerLimit ; |
| | | |
| | | break; |
| | | case PerHubSdk: |
| | | state = num > m_sdkRule.nAlarmNumLowerLimit && num < m_sdkRule.nAlarmNumUpperLimit && num != mRealNum; |
| | | state = num > m_sdkRule.nAlarmNumLowerLimit && num < m_sdkRule.nAlarmNumUpperLimit ; |
| | | // if(m_sdkRule.nAlarmNumLowerLimit>0) |
| | | // { |
| | | // if( m_sdkRule.nAlarmNumUpperLimit>m_sdkRule.nAlarmNumLowerLimit+1) |
| | |
| | | default: |
| | | break; |
| | | } |
| | | m_triggerElement.setState(state); |
| | | |
| | | m_triggerElement.setState(state); |
| | | m_triggerElement.triggerOnce(); |
| | | // DBG("imgUrl="<<imgUrl); |
| | | if (state) { |
| | | auto t_image = image(CutMask()).clone(); |
| | | if (m_triggerElement.getTriggerState() && num!=mRealNum) |
| | | { |
| | | |
| | | cv::Mat t_image = image(CutMask()).clone(); |
| | | if(t_image.empty()) |
| | | { |
| | | if(image.empty()) |
| | | { |
| | | DBG("image empty"); |
| | | } |
| | | DBG("t_image empty"); |
| | | return; |
| | | } |
| | | std::string imgUrl = uploadImgToFdfs(t_image); |
| | | saveInfoToEs(imgUrl, picDate); |
| | | DBG("num=" << num << " lastnum=" << mRealNum); |
| | | mRealNum = num; |
| | | } |
| | | // if(state) |
| | | //DBG("mRealNum=" << mRealNum <<"m_triggerElement.getTriggerState()="<<m_triggerElement.getTriggerState()); |
| | | |
| | | |
| | | if(!state) |
| | | { |
| | | mRealNum = num; |
| | | } |
| | | |
| | | |
| | | m_triggerElement.triggerOnce(); |
| | | |
| | | mRealNum = num; |
| | | // DBG("m_sdkRule.nSdkType="<<m_sdkRule.nSdkType<<" num="<<num); |
| | | fireConnectors(); |
| | | } |
| | |
| | | |
| | | void PerimeterElement::setMask(std::string mask) { |
| | | QJsonArray arrayAreas = getJsonArrayFromQString(QString::fromStdString(mask)); |
| | | if (arrayAreas.isEmpty()) { |
| | | if (arrayAreas.isEmpty() && m_sdkRule.nSdkType != PerimeterSdk) { |
| | | m_bIsMask=false; |
| | | return;//do not detect |
| | | } |
| | | int size = arrayAreas.size(); |
| | |
| | | CvUtil::cvMat2Buffer(image, buffer); |
| | | std::string strImgUrlTmp = ""; |
| | | fdfsClient->fastFds->uploadFile(buffer, strImgUrlTmp, "jpg"); |
| | | strImgUrl.append(fdfsClient->fastFds->getIp() + "/" + strImgUrlTmp); |
| | | // strImgUrl.append(fdfsClient->fastFds->getIp() + "/" + strImgUrlTmp); |
| | | strImgUrl.clear(); |
| | | strImgUrl = strImgUrlTmp; |
| | | // strImgUrl.append("/").append(strImgUrlTmp); |
| | |
| | | t_json["personPicUrl"] = "";// 人员 地库图片 |
| | | t_json["ChannlId"] = getProperty("ch_id"); // 通道id |
| | | t_json["likeDate"] = AppUtil::getTimeSecString(); // 比对时间 |
| | | t_json["picAddress"] = getProperty("str_addr");// 抓拍地址 |
| | | t_json["picAddress"] = m_sdkRule.strAddr.toStdString();// 抓拍地址 |
| | | DBG("picAddress="<<m_sdkRule.strAddr.toStdString()); |
| | | t_json["picMaxUrl"] = "wait todo"; // 大图路径 |
| | | |
| | | |
| | | // t_json["Age"] ="wait todo"; |
| | | t_json["picDate"] = time; // 抓拍时间,必须有 |
| | | // DBG("picDate="<<time); |
| | | DBG("picDate="<<time); |
| | | t_json["picLocalUrl"] = "wait todo"; // 本地路径 |
| | | t_json["isDelete"] = "1";//默认1 ,0无效 1有效 |
| | | |
| | |
| | | t_json["personIsHub"] = m_triggerElement.getTriggerState() ? "1" : "4"; //1: 报警 2: 可疑 3: 安全 4: 未知 |
| | | t_json["videoIp"] = m_sdkRule.strAddr.toStdString(); // 设备ip |
| | | t_json["ack_alarm"] = m_triggerElement.getTriggerState() ? "0" : ""; // que ren shi fou bao jing |
| | | t_json["cluster_id"] = "wait todo"; // ji qun id |
| | | t_json["cluster_id"] = appPref.getStringData("clusterID");; // ji qun id |
| | | |
| | | bool retface = false; |
| | | if (pManagerEsDB) |
| | |
| | | // DBG("RECT x="<<rect.x<<"y"<<rect.y<<"w"<<rect.width<<"h"<<rect.height); |
| | | return rect; |
| | | } |
| | | bool PerimeterElement::isAnd() |
| | | { |
| | | |
| | | } |