安全帽检测

1.1 获取设备系统能力

URL

GET /ISAPI/System/capabilities?type=<all>

查询参数

参数名称参数类型描述
allstringall-表示获取设备全量系统能力;使用场景:CVR对接HCP2.6.2版本平台时,平台接收ISAPI系统能力报文缓存太小导致添加CVR设备失败。可以在CVR配套WEB界面通过PUT /ISAPI/System/ClippedSystemCapCtrl接口配置设备返回精简版系统能力,保证HCP2.6.2版本接入正常。同时WEB需使用/ISAPI/System/capabilities?type=all查询设备全量系统能力。

请求报文

响应报文

1.2 获取安全帽检测单个通道时间布防参数

URL

GET /ISAPI/Event/schedules/safetyHelmetDetection/safetyHelmetDetection-<channelID>

查询参数

参数名称参数类型描述
channelIDstring通道号

请求报文

响应报文

1.3 获取安全帽所有通道时间布防

URL

GET /ISAPI/Event/schedules/safetyHelmetDetection

查询参数

请求报文

响应报文

1.4 配置安全帽所有通道时间布防

URL

PUT /ISAPI/Event/schedules/safetyHelmetDetection

查询参数

请求报文

响应报文

1.5 配置安全帽检测单个通道时间布防

URL

PUT /ISAPI/Event/schedules/safetyHelmetDetection/safetyHelmetDetection-<channelID>

查询参数

参数名称参数类型描述
channelIDstring通道号

请求报文

响应报文

1.6 配置安全帽检测高级参数

URL

PUT /ISAPI/Intelligent/channels/<channelID>/safetyHelmetDetection/advanceConfiguration

查询参数

参数名称参数类型描述
channelIDstring通道号

请求报文

响应报文

<?xml version="1.0" encoding="UTF-8"?>

<ResponseStatus xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 响应消息, attr:version{ro, req, string, 版本}-->
  <requestURL>
    <!--ro, opt, string, 请求的URL, range:[0,1024]-->null
  </requestURL>
  <statusCode>
    <!--ro, req, enum, 状态码, subType:int, [0#OK,1#OK,2#Device Busy,3#Device Error,4#Invalid Operation,5#Invalid XML Format,6#Invalid XML Content,7#Reboot Required]-->0
  </statusCode>
  <statusString>
    <!--ro, req, enum, 状态信息, subType:string, [OK#成功,Device Busy#设备忙,Device Error#设备异常,Invalid Operation#无效的操作,Invalid XML Format#无效的XML格式,Invalid XML Content#无效的XML内容,Reboot Required#设备重启]-->OK
  </statusString>
  <subStatusCode>
    <!--ro, req, string, 详细错误码英文描述, desc:详细错误码的英文描述-->OK
  </subStatusCode>
  <description>
    <!--ro, opt, string, 自定义错误信息描述, range:[0,1024], desc:设备应用程序返回的自定义详细错误信息,用于快速定位评查问题-->badXmlFormat
  </description>
  <MErrCode>
    <!--ro, opt, string, 功能模块化错误码, desc:通用错误码都在此字段范围中-->0x00000000
  </MErrCode>
  <MErrDevSelfEx>
    <!--ro, opt, string, 功能模块化错误码, desc:此字段是MErrCode自定义模块化错误码的扩展字段,自定义模块化错误码一共有MErrCode 的后20bit和此字段的32bit-->0x00000000
  </MErrDevSelfEx>
</ResponseStatus>

1.7 获取安全帽检测参数能力

URL

GET /ISAPI/Intelligent/channels/<channelID>/safetyHelmetDetection/capabilities

查询参数

参数名称参数类型描述
channelIDstring--

请求报文

响应报文

<?xml version="1.0" encoding="UTF-8"?>

<SafetyHelmetDetectionCap xmlns="http://www.isapi.org/ver20/XMLSchema" version="2.0">
  <!--ro, req, object, 安全帽能力, attr:version{req, string, 协议版本}-->
  <normalizedScreenSize>
    <!--ro, opt, object, ro-->
    <normalizedScreenWidth>
      <!--ro, req, int, 归一化宽度, range:[1,1000]-->1
    </normalizedScreenWidth>
    <normalizedScreenHeight>
      <!--ro, req, int, 归一化高度, range:[1,1000]-->1
    </normalizedScreenHeight>
  </normalizedScreenSize>
  <enabled opt="true,false">
    <!--ro, opt, bool, 是否启用未佩戴安全帽检测, attr:opt{req, string, 取值范围}-->true
  </enabled>
  <SafetyHelmetDetectionRegionList size="8">
    <!--ro, opt, array, 检测区域列表, subType:object, attr:size{req, int, 数组元素总数}-->
    <SafetyHelmetDetectionRegion>
      <!--ro, opt, object, 检测区域-->
      <id>
        <!--ro, opt, string, id-->test
      </id>
      <RegionCoordinatesList size="10">
        <!--ro, opt, array, 区域, subType:object, range:[3,10], attr:size{req, int, 数组元素总数}-->
        <RegionCoordinates>
          <!--ro, opt, object, 区域坐标, desc:屏幕左上角为坐标原点(0,0)-->
          <positionX>
            <!--ro, req, int, X坐标, range:[0,1000]-->1
          </positionX>
          <positionY>
            <!--ro, req, int, Y坐标, range:[0,1000]-->1
          </positionY>
        </RegionCoordinates>
      </RegionCoordinatesList>
    </SafetyHelmetDetectionRegion>
  </SafetyHelmetDetectionRegionList>
  <stackTarget opt="true,false">
    <!--ro, req, bool, 报警目标框是否叠加 (报警图片叠加), attr:opt{req, string, 取值范围}-->true
  </stackTarget>
  <stackRule opt="true,false">
    <!--ro, req, bool, 报警规则框是否叠加 (报警图片叠加), attr:opt{req, string, 取值范围}-->true
  </stackRule>
  <alarmLinkageDuration opt="5,10,30,60,120,300,600">
    <!--ro, req, enum, 报警联动持续时间, subType:int, [5#5s,10#10s,30#30s,60#60s,120#120s,300#300s,600#600s], attr:opt{req, string, 取值范围}-->5
  </alarmLinkageDuration>
  <ImageParam>
    <!--ro, opt, object, 图片参数-->
    <ResolutionList size="3">
      <!--ro, opt, array, 分辨率, subType:object, attr:size{req, int, 数组元素总数}-->
      <Resolution>
        <!--ro, opt, object, 分辨率-->
        <id>
          <!--ro, req, string, id-->test
        </id>
        <name>
          <!--ro, req, enum, 分辨率名称, subType:string, [1080p#1080p,720p#720p,D1#D1]-->1080p
        </name>
        <value>
          <!--ro, req, enum, 分辨率值, subType:string, [1920*1080#1920*1080,1280*720#1280*720,740*576#740*576]-->1920*1080
        </value>
      </Resolution>
    </ResolutionList>
    <quality opt="best,good,general">
      <!--ro, req, enum, 图片质量:最好, subType:string, [general#一般,good#不错,best#最好], attr:opt{req, string, 取值范围}-->best
    </quality>
    <alarmUpload opt="true,false">
      <!--ro, req, bool, 是否上传报警图片, attr:opt{req, string, 取值范围}-->true
    </alarmUpload>
    <localStorage opt="true,false">
      <!--ro, opt, bool, 图片是否在本地存储, attr:opt{req, string, 取值范围}-->true
    </localStorage>
  </ImageParam>
  <AdvanceConfiguration>
    <!--ro, opt, object, 高级参数配置-->
    <headSensitivity min="1" max="5" def="3">
      <!--ro, opt, int, 人头检测灵敏度, attr:min{req, int, 最小值},max{req, int, 最大值},def{req, int, 默认值}, desc:越大检出越灵敏-->1
    </headSensitivity>
    <humanSensitivity min="1" max="5" def="3">
      <!--ro, opt, int, 人体检测灵敏度, attr:min{req, int, 最小值},max{req, int, 最大值},def{req, int, 默认值}, desc:越大检出越灵敏-->1
    </humanSensitivity>
    <alarmAnalysisFrame min="1" max="50" def="12">
      <!--ro, opt, int, 告警分析所需帧数, attr:min{req, int, 最小值},max{req, int, 最大值},def{req, int, 默认值}, desc:越大则需要判断帧数越多,则越慢报警-->1
    </alarmAnalysisFrame>
    <FDLibList size="10">
      <!--ro, opt, array, 通道关联人脸库列表, subType:object, attr:size{req, int, 数组元素总数}-->
      <FDLib>
        <!--ro, opt, object, 人脸库-->
        <id min="1" max="10">
          <!--ro, req, int, 序号, range:[1,10], attr:min{req, int, 最小值},max{req, int, 最大值}-->1
        </id>
        <FDID min="1" max="10">
          <!--ro, req, string, 人脸比对库唯一标示ID, attr:min{req, int, 最小值},max{req, int, 最大值}-->test
        </FDID>
        <thresholdValue min="1" max="10">
          <!--ro, opt, int, 针对单个关联的人脸库的检测阈值, attr:min{req, int, 最小值},max{req, int, 最大值}, desc:针对单个关联的人脸库的检测阈值,阈值越大检测准确率越高,范围[0,100]";字段使用说明,如果总人脸库阈值启用后,那么单个人脸库阈值不作用-->1
        </thresholdValue>
        <customFaceLibID min="1" max="10">
          <!--ro, opt, string, 自定义人脸库ID, attr:min{req, int, 最小值},max{req, int, 最大值}, desc:若填入customID,则设备无需校验FDID字段,以该字段为准-->test
        </customFaceLibID>
      </FDLib>
    </FDLibList>
  </AdvanceConfiguration>
  <SearchDescriptionCap>
    <!--ro, opt, object, 安全帽事件查询能力, desc:/ISAPI/Intelligent/channels/<ID>/safetyHelmetDetection/search?format=json-->
    <timeSpanMaxNum>
      <!--ro, req, enum, 支持同时检索的最大时间段数目, subType:string, [all#全部(包括人脸匹配成功和人脸匹配失败),success#人脸匹配成功,failed#人脸匹配失败]-->all
    </timeSpanMaxNum>
    <resultMaxNum>
      <!--ro, req, int, 支持检索的最大条数-->1
    </resultMaxNum>
    <faceContrastResult opt="all,success,failed">
      <!--ro, req, string, 匹配类型, attr:opt{req, string, 取值范围}-->test
    </faceContrastResult>
    <FDLibList size="10">
      <!--ro, opt, array, (检索条件)人脸库列表, subType:object, attr:size{req, int, 数组元素总数}, desc:该列表和关联人脸库的人脸库ID重复,因此该节点的值参考SafetyHelmetDetectionCap.AdvanceConfiguration.FDLibList-->
      <FDLib>
        <!--ro, opt, object, 人脸库-->
        <FDID min="1" max="10">
          <!--ro, req, string, 人脸比对库唯一标示ID, attr:min{req, int, 最小值},max{req, int, 最大值}-->test
        </FDID>
      </FDLib>
    </FDLibList>
    <name min="1" max="10">
      <!--ro, opt, string, (检索条件)姓名, attr:min{req, int, 最小值},max{req, int, 最大值}, desc:(检索条件)姓名,当FDLibList存在时有效-->test
    </name>
  </SearchDescriptionCap>
  <videoOverlay>
    <!--ro, opt, object, 视频预览叠加-->
    <stackTarget opt="true,false">
      <!--ro, req, bool, 目标框是否叠加, attr:opt{req, string, 取值范围}-->true
    </stackTarget>
    <stackRule opt="true,false">
      <!--ro, req, bool, 规则框是否叠加, attr:opt{req, string, 取值范围}-->true
    </stackRule>
  </videoOverlay>
  <wearHelmetEnabled opt="true,false">
    <!--ro, opt, bool, 是否启用佩戴安全帽检测, attr:opt{req, string, 取值范围}-->true
  </wearHelmetEnabled>
  <analysisMode opt="realTimeMode,autoSwitchMode">
    <!--ro, opt, string, 分析模式, attr:opt{req, string, 取值范围}, desc:realTimeMode实时模式,autoSwitchMode#轮询模式, desc:引擎也有分析模式(/ISAPI/Intelligent/analysisEngines/<ID>中analysisMode),设备会根据负载均衡的方式,添加到相同分析模式的引擎中,当引擎没有对应的配置,则返回失败,错误码taskNotMatchEngine-->test
  </analysisMode>
  <helmetFilterEnabled opt="true,false">
    <!--ro, opt, bool, 是否过滤正常戴安全帽, attr:opt{req, string, 取值范围}, desc:开启后会过滤掉正常戴安全帽的图片-->false
  </helmetFilterEnabled>
  <durationCapEnabled opt="true,false">
    <!--ro, opt, bool, 是否启用安全帽持续抓拍功能, attr:opt{req, string, 取值范围}, desc:开启后,会上报safetyHelmetDurationEvent事件-->false
  </durationCapEnabled>
  <durationCapInterval min="0" max="3600">
    <!--ro, opt, int, 安全帽持续抓拍时间间隔, attr:min{req, int, 最小值},max{req, int, 最大值}, desc:单位秒-->30
  </durationCapInterval>
  <shieldRegionList size="8">
    <!--ro, opt, array, 安全帽屏蔽区域列表, subType:object, attr:size{req, int, 数组元素总数}-->
    <shieldRegion>
      <!--ro, opt, object, 安全帽屏蔽区域-->
      <id>
        <!--ro, opt, string, 区域ID-->test
      </id>
      <regionCoordinatesList size="10">
        <!--ro, opt, array, 区域坐标列表, subType:object, range:[3,10], attr:size{req, int, 数组元素总数}-->
        <regionCoordinates>
          <!--ro, opt, object, 区域坐标, desc:屏幕左上角为坐标原点(0,0)-->
          <positionX>
            <!--ro, req, int, X坐标, range:[0,1000]-->1
          </positionX>
          <positionY>
            <!--ro, req, int, Y坐标, range:[0,1000]-->1
          </positionY>
        </regionCoordinates>
      </regionCoordinatesList>
    </shieldRegion>
  </shieldRegionList>
  <sensitivity min="0" max="100">
    <!--ro, opt, int, 灵敏度, range:[1,100], attr:min{req, int, 最小值},max{req, int, 最大值}-->1
  </sensitivity>
  <checkTime min="0" max="3600">
    <!--ro, opt, int, 检测持续时间, range:[1,3600], attr:min{req, int, 最小值},max{req, int, 最大值}-->1
  </checkTime>
</SafetyHelmetDetectionCap>

1.8 获取安全帽检测高级配置

URL

GET /ISAPI/Intelligent/channels/<channelID>/safetyHelmetDetection/advanceConfiguration

查询参数

参数名称参数类型描述
channelIDstring通道号

请求报文

响应报文