配置: 运动检测

关于

在Agent中,运动检测在启动警报和促进AI处理方面起着关键作用。您可以配置Agent在检测到运动或触发警报时进行录制。要设置这些选项,请导航到录制菜单并参考模式设置。此外,运动检测还可以用于激活各种操作

需要注意的是,由于运动检测无法区分实际物体运动和环境因素(如风、雨或亮度变化),因此有时可能会导致误报警。为了减少此类误报警,您可以通过将Agent与CodeProject.AI集成来提高运动检测的准确性,以进行更复杂的警报过滤。

设置运动检测

在Agent中,通过编辑摄像头并从右上角菜单中选择检测器,可以访问Agent中的运动检测区域控制。要设置检测器,首先需要定义要监视的区域。Agent支持最多9个区域,每个区域由不同的颜色表示,可以通过区域下拉菜单进行选择。要创建一个区域,点击铅笔工具,然后在视频预览上绘制。使用鼠标左键或触摸进行绘制,在桌面上使用鼠标右键进行擦除。尖笔工具调整绘制尖笔的大小,橡皮擦工具删除绘制的区域。重置工具可用于将整个区域填充为所选区域。然后,Agent会监视这些彩色区域的运动。

  • 启用:切换检测器的使用。
  • 检测器:选择运动检测器类型并使用“…”按钮进行配置。各种运动检测器在各自的部分中有详细说明。
  • 颜色:调整运动检测叠加的颜色(不适用于所有检测器)。
  • 超时:设置摄像头在检测到运动停止后保持运动状态的持续时间(以秒为单位,介于1和60之间,默认为3)。
使用区域

区域对于AI检测器(人脸/车牌/物体识别)和物体跟踪检测器(如绊线、速度、物体跟踪)至关重要。您可以在检测器配置中选择哪些区域将触发警报,或为特定区域的警报指定操作

简单检测器会在所有区域中检测到足够的运动时激活警报。

某些检测器类型不使用区域设置,例如MQTT、ONVIF或通过API调用触发的运动。

使用运动区域

运动区域是可配置的区域组,您可以为其命名并保存以备将来使用。要将当前的运动区域配置保存为新区域,请单击 区域 旁边的编辑图标。这些工具允许您添加、编辑和删除区域。

在将 PTZ 摄像机移动到 PTZ 预置位时应用运动区域(使用 Agent UI):

  • 创建并保存一个具有特定名称的新运动区域配置,例如 "停车场"。
  • 添加一个新的 操作

    如果:"应用 PTZ 预置位"
    选择 PTZ 预置位命令(例如 "转到预置位 1")。注意:您的摄像机必须支持 PTZ 预置位才能正常工作。
    点击添加任务:
    任务:"设置运动检测区域"
    选择您的新区域("停车场")。
    点击两次确定。现在,每当您选择该预置位,或者如果 Agent 通过计划或其他事件设置预置位,该运动区域将自动应用。

您还可以使用 计划程序 修改运动检测器区域。此功能允许根据白天、星期或特定日期的不同来配置不同的运动区域。

简易检测器

简单

简单检测器专注于识别摄像头视野内的任何移动。它是最高效的CPU选项,仅次于ONVIF检测器。检测到的移动以红色突出显示,使您能够轻松辨别场景中的移动来源。

  • 高级:有关其他设置和选项,请参阅下面的高级部分
  • 灵敏度:调整触发检测所需的运动级别。设置最小和最大值可以细化检测 - 例如,最大值为80可以帮助忽略大规模的亮度变化。滑块下方的数字表示像素变化的百分比。
  • 增益:将乘数应用于变化的像素,以增加或减少运动检测的灵敏度。

HAAR对象检测器

此方法使用称为HAAR级联的文件来识别视频中的对象。然而,您可以通过使用简单的对象检测器并设置一个AI服务器来获得更好的结果。

  • 帧大小:选择用于处理的帧大小。较小的帧减少CPU使用,但可能不太准确。
  • 检测间隔:设置帧处理的频率,以毫秒为单位。例如,200表示每秒5次,1000表示每秒一次。
  • 宽度限制和高度限制:定义Agent用于检测的对象的大小范围,以帧宽度或高度的百分比表示。调整这些滑块将在视频上显示叠加,指示正在针对的对象的大小范围。
  • 使用GPU:选择是否使用GPU进行处理,仅在您的GPU支持Cuda并且已安装必要的驱动程序时可用。
  • 文件:选择HAAR级联文件以配置对象检测器。提供了用于检测人脸和猫脸的默认文件。
  • 警报条件和警报数量:根据对象检测配置Agent生成警报,具体取决于检测到的对象数量。例如,要在识别到人脸时触发警报,请将条件设置为“多于”并将警报数量设置为0。
  • 警报区域(v4.4.8.0+):指定要包含在监视区域中的运动区域。
  • 检查角落:有关更多详细信息,请参见检查角落

角落检测

Agent使用一种复杂的方法来确定检测到的对象是否应该根据您的区域配置触发警报或动作。它通过检查检测到的对象的中心点和(可选地)扩展到对象边界框的角落的网格来实现这一点。您可以通过设置代表从中心点到边界框角落的距离的百分比来调整此功能,从而调整此功能。实际上,设置为0意味着只检查中心点,100检查所有角落,50检查边界矩形的中心点和每个角落之间的中点。如果您收到许多事件通知,而对象似乎不在指定的区域内,则将“检查角落”设置为0可能会有益。

MQTT

您可以从您的 MQTT 服务器启动运动检测。首先,请确保您已经适当设置了 MQTT。然后,要触发对象检测,只需将检测器配置屏幕中指示的命令传递到 SERVER/commands 通道,其中 SERVER 是您的服务器名称(显示在您可以在设置中编辑的服务器菜单中)。此集成允许更多样化和响应灵敏的运动检测系统,利用您的 MQTT 服务器的功能。

ONVIF

许多兼容ONVIF的设备都配备了自己的运动检测功能。当您选择此模式并将其与一个支持ONVIF的摄像机配对(在Agent中使用ONVIF连接类型),Agent将依赖于设备本身提供的运动检测事件,并根据这些事件触发动作。如果您在使用此功能时遇到任何问题,建议检查日志(在本地服务器上的/logs.html可访问),因为您的摄像机可能不支持ONVIF检测。有关配置这些设置的更多信息,请参阅服务器ONVIF设置

人员检测器

该方法采用了专门设计用于检测行人的算法。然而,您可能会发现使用简单的物体检测器并集成Deepstack AI进行警报过滤会提供更好的结果。

  • 使用GPU:决定是否使用GPU进行处理,仅当您的GPU支持Cuda并安装了必要的驱动程序时才可用。
  • 帧大小:选择用于处理的帧大小。请注意,较小的帧对CPU的负荷较小,但可能产生较不准确的结果。
  • 检测间隔:设置帧处理的频率,以毫秒为单位。例如,200表示每秒5次,而1000表示每秒一次。
  • 警报条件和警报数量:根据检测到的对象数量配置生成警报的条件。例如,要在识别到人脸时触发警报,将条件设置为“大于”并在警报数量字段中输入0。
  • 警报区域(v4.4.8.0+):选择应在检测区域内监视的特定运动区域。
  • 检查角落:有关更详细的设置,请参阅检查角落

Reolink

一些Reolink摄像头提供了一个API端点,Agent 程序可以轮询该端点以接收运动或AI警报状态。如果您的摄像头支持此功能,您可以利用此检测器。要检查摄像头是否具有此功能,请尝试访问以下URL:`http://[IP ADDRESS]/api.cgi?cmd=GetMdState&channel=0&rs=Get&user=[USERNAME]&password=[PASSWORD]`(将`[IP ADDRESS]`,`[USERNAME]`和`[PASSWORD]`替换为您的摄像头的IP地址和登录凭据)。成功连接将返回JSON格式的文本而不是错误页面。

  • 间隔:确定Agent 程序轮询摄像头以获取警报或运动数据的频率。
  • 模式:选择“运动”和“AI”之间的模式。这两种模式都会触发Agent 程序中的运动检测器事件,可用于录制(将录制模式设置为Detect)。选择“AI”选项将在摄像头识别特定对象类别(例如dog_cat,face,people,vehicle)时触发运动检测。

您可以配置操作,以在检测到标记为dog_cat,face,people或vehicle的对象时执行任务,从版本4.6.6.0开始。

注意:要启用AI功能,您可能需要在摄像头的Web界面中激活跟踪并设置最小和最大对象大小参数。然后,Agent 程序将使用Reolink识别的对象标记您的录像。

速度检测

此方法利用您提供的场景信息来跟踪移动物体,估计它们的速度,并在物体移动过快或过慢时生成警报。

  • 高级设置:要获取更详细的设置,请参考下面的高级部分
  • 宽度限制和高度限制:定义场景中物体检测的大小范围,值以场景宽度或高度的百分比表示。调整这些滑块将在视频上显示一个叠加层,指示物体的目标大小范围。
  • 最小移动距离:根据场景宽度的百分比设置物体被视为运动的最小距离。
  • 最小时间:指定物体必须保持运动的时间持续,以十分之一秒为单位(例如,1 = 0.1秒,10 = 1秒)。
  • 速度测量:选择叠加层的首选速度单位。
  • 速度限制:确定速度检测的下限和上限。超出此范围的运动将触发运动检测事件。
  • 水平和垂直距离:输入场景的总距离(以米为单位)。Agent使用此测量值来计算移动物体的速度。
  • 警报区域(v4.4.8.0+):选择要包括在监控区域中的运动区域。
  • 检查角落:有关其他设置,请参见检查角落

对象跟踪

该检测器可以识别和跟踪移动物体,并根据其在场景中存在的持续时间和移动距离触发运动检测事件。

  • 高级设置:如需更详细的设置和选项,请参考下面的高级部分
  • 宽度限制和高度限制:指定物体检测的大小范围,值以场景宽度或高度的百分比给出。调整这些滑块将在视频上叠加一个可视化的目标物体大小范围。
  • 最小移动距离:定义物体必须移动的最小距离才能被识别为移动物体,相对于场景的宽度。
  • 最小时间:设置物体必须保持运动的最短时间,以十分之一秒为单位(例如,1 = 0.1秒,10 = 1秒)。
  • 显示总数:在实时视频中添加一个计数器,以跟踪移动物体。
  • 热力图:通过为跟踪的物体添加线条,可视化随时间变化的运动模式。
  • 警报区域(v4.4.8.0+):选择应包括在监视区域中的运动区域。
  • 检查角落:有关更多信息,请参阅检查角落

Agent在场景中监视和跟踪运动时,会在检测到的物体周围显示彩色矩形。颜色的含义如下:

  • 白色:刚检测到的物体,正在考虑中。
  • 黄色:物体已连续检测多帧。
  • 橙色:物体已移动至少达到跟踪设置中指定的最小时间。
  • 红色:物体已满足所有跟踪要求,触发运动检测事件。

行程线

该检测器能够识别和跟踪移动物体,在场景中预定义的触发线上交叉时触发运动检测事件。要添加触发线,只需在实时视频上点击并拖动。您可以根据需要创建多个触发线。要删除触发线,只需点击并拖动其中一个点移出场景。

  • 高级设置:有关更详细的设置和选项,请参阅下面的高级部分
  • 宽度限制和高度限制:设置要检测的物体的大小范围,值以场景宽度或高度的百分比表示。调整这些滑块将在视频上叠加一个目标大小范围的可视化表示。
  • 最小移动距离:指定物体必须移动的最小距离才能被识别为移动物体,相对于场景的宽度。
  • 最小时间:定义物体必须保持运动的最短时间,以十分之一秒为单位(例如,1 = 0.1秒,10 = 1秒)。
  • 重复触发:启用此选项可允许物体多次触发同一触发线。默认情况下,物体只能触发一次触发线。
  • 计数:显示物体穿过触发线的次数,以及穿越的方向。选项包括计数左侧、右侧、两侧或总穿越次数。
  • 警报:配置系统在触发线被穿越时生成警报,可以指定特定方向或任意方向。
  • 警报区域(v4.4.8.0+):选择要包括在监控区域中的运动区域。
  • 检查角落:有关更多信息,请参阅检查角落

通过API

要使用API调用来启动摄像机的运动检测,您需要指定对象类型(ot)和对象ID(oid)。例如,对于一个摄像机(ot=2)和ID为1的设备(oid=1 — 在编辑设备时,该ID显示在编辑控件的顶部),API调用的格式如下:
http://localhost:8090/command/detect?ot=2&oid=1

高级设置

检测器的默认设置通常适用于大多数场景,但如果需要,您可以对其进行微调以提高性能。

  • 分析器:当前可用的分析器是CNT背景减法器,以其高准确性和低CPU使用率而闻名。
  • 帧大小:选择用于处理的帧大小。较小的帧会降低CPU使用率,但可能会降低准确性。
  • 跟踪器:选择用于对象跟踪的OpenCV跟踪器。选项包括:
    • Mosse:此跟踪器提供最低的CPU使用率,但准确性最低(默认)。
    • KCF:比Mosse更准确,但稍微更耗CPU。
    • CSRT:最准确的选项,但也使用最多的CPU。适用于具有挑战性的跟踪情况。
  • 最大对象数:设置同时跟踪的对象数量限制。更多的对象意味着更高的CPU使用率。
  • 检测间隔:定义运动检测的帧处理频率,以毫秒为单位(例如,200表示每秒5次,1000表示每秒1次)。
  • 跟踪间隔:设置跟踪器的处理频率。较高的间隔可能会丢失快速移动的对象(例如,200表示每秒5次,1000表示每秒1次)。
  • 像素稳定性:确定像素被视为稳定的样本数量以及像素保持相同颜色的最大“信用”。这些设置对于有效的背景减法和运动检测至关重要。 更多信息
  • 使用历史记录:启用此选项以了解场景中持续移动的对象。通常建议仅在必要时启用。
  • 并行处理:在运动检测算法中启用并行处理。建议保持启用状态。
  • 跟踪超时:指定等待对象重新出现的时间(以秒为单位),然后停止跟踪它。
  • 运动超时:设置等待静止对象再次移动的持续时间(以秒为单位),然后停止其跟踪。