| | |
| | | #include <jsoncpp/json/json.h> |
| | | |
| | | #define ALARM_PERCENT (10) //10% |
| | | |
| | | PerimeterElement::PerimeterElement(const SdkRule &rule) : |
| | | m_sdkRule(rule), |
| | | PipeElement(true), |
| | |
| | | mRealNum(0), |
| | | m_triggerElement(rule.nTriggerDelay*8,0), |
| | | pManagerEsDB(nullptr), |
| | | m_bIsMask(true) |
| | | { |
| | | m_bIsMask(true) { |
| | | |
| | | pManagerEsDB = new EsDBTool(appPref.getStringData("ipAdd"), appPref.getIntData("ipPort")); |
| | | } |
| | |
| | | // DBG("picDate="<<picDate); |
| | | |
| | | } |
| | | if (m_sdkRule.nSdkType == PerimeterSdk) |
| | | { |
| | | if (m_sdkRule.nSdkType == PerimeterSdk) { |
| | | |
| | | if(m_bIsMask) |
| | | { |
| | | if (m_bIsMask) { |
| | | std::vector<Point> poly2; |
| | | std::vector<Point> interPoly; |
| | | poly2.push_back(Point(rect.x(),rect.y())); |
| | |
| | | int per2 = (int)(inter / total2 * 100); |
| | | int per=std::max(per1,per2); |
| | | |
| | | if(ALARM_PERCENT <= per) |
| | | { |
| | | if (ALARM_PERCENT <= per) { |
| | | //DBG("per 1="<<per1<<" per2="<<per2<<" per="<<per); |
| | | m_recVec.push_back(obj.rect); |
| | | num++; |
| | |
| | | } |
| | | |
| | | |
| | | } |
| | | else if (mPolygon.containsPoint(center, Qt::OddEvenFill) || !m_bIsMask) |
| | | { |
| | | } else if (mPolygon.containsPoint(center, Qt::OddEvenFill) || !m_bIsMask) { |
| | | m_recVec.push_back(obj.rect); |
| | | |
| | | |
| | | num++; |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | |
| | | |
| | | m_triggerElement.setState(state); |
| | | m_triggerElement.triggerOnce(); |
| | | if (m_triggerElement.getTriggerState() ) |
| | | { |
| | | if (m_triggerElement.getTriggerState()) { |
| | | if(num > 0) { |
| | | cv::Mat t_image = image(CutMask()).clone(); |
| | | if(t_image.empty()) |
| | | { |
| | | if (t_image.empty()) { |
| | | DBG("t_image empty"); |
| | | return; |
| | | } |
| | |
| | | QJsonObject obj = jsonValue.toObject(); |
| | | int x = obj.value("x").toDouble() * 4; |
| | | int y = obj.value("y").toDouble() * 4; |
| | | if(m_sdkRule.nSdkType == PerimeterSdk) |
| | | { |
| | | if (m_sdkRule.nSdkType == PerimeterSdk) { |
| | | poly1.push_back(Point(x,y)); |
| | | } |
| | | else |
| | | { |
| | | } else { |
| | | mPolygon << (QPoint(x, y)); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | |
| | | // DBG("RECT x="<<rect.x<<"y"<<rect.y<<"w"<<rect.width<<"h"<<rect.height); |
| | | return rect; |
| | | } |
| | | bool PerimeterElement::isAnd() |
| | | { |
| | | |
| | | bool PerimeterElement::isAnd() { |
| | | |
| | | } |