XML_Counting

Counting message in XML format

<Counting version="2.0" xmlns="http://www.isapi.org/ver20/XMLSchema">
  <enabled><!--req, xs: boolean--></enabled>
  <normalizedScreenSize><!--opt-->
    <normalizedScreenWidth><!--req, xs: integer--></normalizedScreenWidth>
    <normalizedScreenHeight><!--req, xs: integer--></normalizedScreenHeight>
  </normalizedScreenSize>
  <MountingConfiguration><!--opt, mounting parameters-->
    <viewingAngle><!--req, xs: string, "vertical,tilt"--></viewingAngle>
    <mountHeight><!--opt, xs: integer; mounting height, unit: cm--></mountHeight>
    <horizontalDistance><!--opt, xs: integer; horizontal distance, unit: cm--></horizontalDistance>
    <focalLength><!--opt, xs: integer; unit: mm--></focalLength>
  </MountingConfiguration>
  <OverlayConfiguration><!--opt, OSD parameters-->
    <enabled><!--req, xs: boolean--></enabled>
    <positionX><!--req, xs: interger--></positionX>
    <positionY><!--req, xs: interger--></positionY>
    <OSDType>
      <!--dep, it is valid when enabled is "true", xs: string, "enter, leave,entreLeave,peoplePassing"-->
    </OSDType>
    <child><!--opt, xs: boolean, whether to enable OSD for children counting--></child>
  </OverlayConfiguration>
  <Demarcation><!--opt-->
    <enabled><!--req, xs: boolean--></enabled>
    <DemarcationRegionList><!--req-->
      <DemarcationRegion><!--opt-->
        <id><!--req, xs:integer--></id>
        <RegionCoordinatesList>
          <RegionCoordinates><!--req-->
            <positionX><!--req, xs:integer;coordinate--></positionX>
            <positionY><!--req, xs:integer;coordinate--></positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </DemarcationRegion>
    </DemarcationRegionList>
    <DemarcationLine>
      <StartPoint><!--req-->
        <positionX><!--req, xs: integer--></positionX>
        <positionY><!--req, xs: integer--></positionY>
      </StartPoint>
      <EndPoint><!--req-->
        <positionX><!--req, xs: integer--></positionX>
        <positionY><!-- req, xs: integer--></positionY>
      </EndPoint>
    </DemarcationLine>
  </Demarcation>
  <CountingRegionType><!--read-only, req, xs: string, detection type: "region,line"--></CountingRegionType>
  <CountingRegionList><!--opt, detection region list-->
    <CountingRegion><!--opt, detection region-->
      <id><!--req, xs: integer, detection region ID--></id>
      <Direction><!--req, detection direction-->
        <StartPoint><!--req-->
          <positionX><!--req, xs: integer--></positionX>
          <positionY><!--req, xs: integer--></positionY>
        </StartPoint>
        <EndPoint><!--req-->
          <positionX><!--req, xs: integer--></positionX>
          <positionY><!--req, xs: integer--></positionY>
        </EndPoint>
      </Direction>
      <sensitivityLevel><!--req, xs: integer, sensitibity--></sensitivityLevel>
      <spaceGenerationSpeed><!--opt, xs: integer--></spaceGenerationSpeed>
      <timeGenerationSpeed><!--opt, xs: integer--></timeGenerationSpeed>
      <countingSpeed><!--opt, xs: integer--></countingSpeed>
      <detectionType><!--opt, xs: string, "auto,head,shoulder"--></detectionType>
      <objectSizeCorrection><!--opt, xs: integer--></objectSizeCorrection>
      <RegionCoordinatesList><!--req-->
        <RegionCoordinates><!--req-->
          <positionX><!--req, xs: integer; x-coordinate--></positionX>
          <positionY><!--req, xs: integer; y-coordinate--></positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
      <RuleRegionCoordinatesList><!--opt, rule frame-->
        <RegionCoordinates><!--req-->
          <positionX><!--req, xs: integer; x-coordinate--></positionX>
          <positionY><!--req, xs: integer; y-coordinate--></positionY>
        </RegionCoordinates>
      </RuleRegionCoordinatesList>
    </CountingRegion>
  </CountingRegionList>
  <CountingLineItemList><!--opt, detection line list-->
    <CountingLineItem><!--opt, detection line-->
      <id><!--req, xs: integer, detection line ID--></id>
      <direction><!--req, detection line direction-->
        <StartPoint><!--req-->
          <positionX><!--req, xs: integer--></positionX>
          <positionY><!--req, xs: integer--></positionY>
        </StartPoint>
        <EndPoint><!--req-->
          <positionX><!--req, xs: integer--></positionX>
          <positionY><!--req, xs: integer--></positionY>
        </EndPoint>
      </direction>
      <sensitivityLevel><!--req, xs: integer, sensitivity--></sensitivityLevel>
      <spaceGenerationSpeed><!--opt, xs: integer--></spaceGenerationSpeed>
      <timeGenerationSpeed><!--opt, xs: integer--></timeGenerationSpeed>
      <countingSpeed><!--opt, xs: integer--></countingSpeed>
      <detectionType><!--opt, xs: string, "auto,head,shoulder"--></detectionType>
      <objectSizeCorrection><!--opt, xs: integer--></objectSizeCorrection>
      <LineCoordinatesList>
        <Coordinates><!--req-->
          <positionX><!--req, xs: integer; x-coordinate--></positionX>
          <positionY><!--req, xs: integer; y-coordinate--></positionY>
        </Coordinates>
      </LineCoordinatesList>
      <polyline>
        <!--opt, xs: boolean, this node should be set to "true" when displaying polyline; otherwise, this node does not exist-->
      </polyline>
    </CountingLineItem>
  </CountingLineItemList>
  <dataUploadCycle>
    <!--opt, xs:integer, time period for uploading people counting data-->
  </dataUploadCycle>
  <SECUploadEnabled>
    <!--opt, xs:boolean, uploading mechanism for each second-->
  </SECUploadEnabled>
  <InterferenceSuppression><!--opt-->
    <shadow><!--opt, xs:boolean--></shadow>
    <loitering><!--opt, xs:boolean--></loitering>
    <cart><!--opt, xs:boolean--></cart>
  </InterferenceSuppression>
  <EmailReport><!--opt-->
    <DayReport><!--opt, xs:boolean--></DayReport>
    <WeekReport><!--opt, xs:boolean--></WeekReport>
    <MonthReport><!--opt, xs:boolean--></MonthReport>
    <YearReport><!--opt, xs:boolean--></YearReport>
    <reportFormat opt="excel,csv,txt,xml"><!--opt, xs: string, email report format, multiple formats can be selected, the default format is EXCEL--></reportFormat>
  </EmailReport>
  <CountingCalibrate><!--req-->
    <calibrateType>
      <!--opt ,xs:string,"automatic,manual,no", calibration types, including Auto, Manual, and None-->
    </calibrateType>
    <SetupParam><!--req,-->
      <height>
        <!--opt, xs:float, height, unit: centimeter. The default height is 300, and it is ranging from 200 to 500-->
      </height>
      <tiltAngle>
        <!--opt, ro,xs:float, angle of pitch, unit: degree. The default value is 0, and it is ranging from 0 to 180-->
      </tiltAngle>
      <heelAngle>
        <!--opt, ro,xs:float, angle of inclination, unit: degree. The default value is 0, and it is ranging from -90 to 90 -->
      </heelAngle>
    </SetupParam>
    <CountingArea><!--req,ro,"Counting Region (in Red Frame)"-->
      <RegionCoordinatesList>
        <RegionCoordinates><!--req-->
          <positionX><!--req, xs:integer;coordinate--></positionX>
          <positionY><!--req, xs:integer;coordinate--></positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </CountingArea>
    <AutomaticCalib><!--opt,it is valid when calibrateType is "automaticCalib"-->
      <CalibRegion><!--opt, Calibration Region (in Green Frame)-->
        <RegionCoordinatesList>
          <RegionCoordinates><!--req-->
            <positionX><!-- req, xs:integer;coordinate --></positionX>
            <positionY><!--req, xs:integer;coordinate--></positionY>
          </RegionCoordinates>
        </RegionCoordinatesList>
      </CalibRegion>
    </AutomaticCalib>
  </CountingCalibrate>
  <HeightFilterOverlay><!--opt-->
    <enabled>
      <!--opt, xs:boolean, whether to enable height filter. By default, it is disabled-->
    </enabled>
    <heightFilter>
      <!--opt,xs:integer, filter height, unit: centimeter. The default value is 120, and it is ranging from 0 to 250-->
    </heightFilter>
  </HeightFilterOverlay>
  <countingType><!--opt, xs: string, method to trigger counting: "none,alarmInputTrigger,videoTrigger"--></countingType>
  <signalType>
    <!--dep, xs: string, signal type: "level,pulses", this node is valid when <countingType> is set to "videoTrigger" or "alarmInputTrigger"-->
  </signalType>
  <RS485TransmissionEnabled><!--dep, xs: boolen, "false,true"--></RS485TransmissionEnabled>
  <dailyResetTime>
    <!--opt; xs: ios_8601_time, integer hour, e.g., "22:00:00+08:00"-->
  </dailyResetTime>
  <streamOverlayRuleInfos><!--req, xs: boolean, "true,false", whether to enable overlaying rule information in stream--></streamOverlayRuleInfos>
  <detectThreshold><!--opt, xs: integer, global detection threshold, value range: [0,100], default: 90--></detectThreshold>
  <aidedTrackEnabled><!--opt, xs: boolean, "true,false", whether to enable auxiliary tracking, by default, it is enabled--></aidedTrackEnabled>
  <TargetRegionCoordinatesList><!--opt, target frame, only supports square-->
    <RegionCoordinates><!--req-->
      <positionX><!--req, xs: integer; x-coordinate--></positionX>
      <positionY><!--req, xs: integer; y-coordinate--></positionY>
    </RegionCoordinates>
  </TargetRegionCoordinatesList>
  <ChildFilter><!--opt, counting children-->
    <enabled><!--req, xs: boolean, whether to enable counting children: true, false--></enabled>
    <heightThreshold>
      <!--dep, xs: integer, height threshold of children, the counting will start when the height of children is higher than configured height threshold, unit: cm, value range: [100,200]-->
    </heightThreshold>
  </ChildFilter>
  <MisinfoFilter><!--opt, false alarm filtering-->
    <enabled><!--req, xs: boolean, whether to enable false alarm filtering: true, false--></enabled>
    <threshold><!--opt, xs: integer, threshold of false alarm filtering, value range: [0,100], default value: 15, larger threshold value corresponds to higher precision--></threshold>
    <timesLimit><!--opt,xs:integer, judge times of false alarm, value range: [1,5], default value: 3, more attempts corresponds to higher precision--></timesLimit>
  </MisinfoFilter>
  <detectionMode>
    <!--opt, xs: string, detection mode: single-detect based on tracking algorithm, double-detect based on depth map, double_single-detect based on depth map mainly and tracking algorithm secondarily, single_double-detect based on tracking algorithm mainly and depth map secondarily-->
  </detectionMode>
  <TrajectoryCountFilter><!--opt, pattern counting filtering-->
    <enabled><!--req, xs: boolean,whether to enable, by default, it is enabled--></enabled>
    <movementDisplacement><!--opt, xs: integer, displacement range: [0,200], default value: 40, unit: cm--></movementDisplacement>
    <residenceTime><!--opt, xs: float, dwell time duration, range: [0,10.0], default value: 0.1, unit: second--></residenceTime>
  </TrajectoryCountFilter>
  <RegionsDirectionList><!--opt, counting direction-->
    <RegionsDirection>
      <id><!--req, xs: integer, detection region ID--></id>
      <StartRegionCoordinatesList><!--req, start region-->
        <RegionCoordinates>
          <positionX><!--req, xs: integer; x-coordinate--></positionX>
          <positionY><!--req, xs: integer; y-coordinate--></positionY>
        </RegionCoordinates>
      </StartRegionCoordinatesList>
      <EndRegionCoordinatesList><!--req, end region-->
        <RegionCoordinates><!--req-->
          <positionX><!--req, xs: integer; x-coordinate--></positionX>
          <positionY><!--req, xs: integer; y-coordinate--></positionY>
        </RegionCoordinates>
      </EndRegionCoordinatesList>
    </RegionsDirection>
  </RegionsDirectionList>
  <maintenanceModeEnabled><!--opt, xs: boolean, whether to enable maintenance mode--></maintenanceModeEnabled>
  <analysisMode>
    <!--optional, string, ro, analysis mode: "realTimeMode"-real time, "autoSwitchMode"-auto switch-->realTimeMode
  </analysisMode>
</Counting>