关于
移动侦测监视摄像头信号流中的位移,使 Agent DVR 能够仅在实际发生事件时进行录制和警报。这可以节省磁盘空间,使录像文件的审查速度快得多,并且可以在有人进入您的车道或车辆停靠在外面时立即通知您。
Agent DVR 中的移动侦测在启动警报和协助AI 处理中起着至关重要的作用。您可以配置 Agent DVR 在检测到移动侦测或触发警报时进行录制。要设置这些选项,请导航到录制菜单并参考模式设置。此外,移动侦测还可用于激活各种操作。
需要注意的是,由于无法区分实际物体位移和环保因素(如风、雨或亮度变化)引起的变化,移动侦测有时可能导致误警报。要缩小此类误警报,您可以通过将 Agent DVR 与 CodeProject.AI 集成来提高移动侦测的准确性,以实现更复杂的警报过滤。
设置移动侦测
移动区域让您能够将检测重点放在重要的区域,例如门道、车道或花园小径,同时忽略繁忙的区域,如道路或摇摆的树木,这些区域会导致误报。
Agent DVR 中的移动探测器区域控制可通过编辑摄像头并从右上角菜单选择探测器来访问。要设置探测器,首先需要定义要监控的区域。Agent DVR 支持最多 9 个区域,每个区域用不同的颜色表示,可通过区域下拉菜单选择。要创建区域,请点击笔工具并在视频预览上绘制。使用左鼠标按钮或触摸进行绘制,在桌面上,使用右鼠标按钮进行擦除。笔尖工具可调整绘制笔尖的大小,而橡皮擦工具可删除已绘制的区域。重置工具可用于用选定的区域填充整个区域。Agent DVR 随后会监控这些彩色区域的移动。
- 已启用:切换探测器的使用。
- 探测器:选择移动探测器类型,并使用按钮对其进行配置。各种移动探测器在各自的部分中进行了说明。
- 叠加层:在实时视频上显示或隐藏运动检测叠加层。
- 颜色:调整运动检测叠加层的颜色(不适用于所有探测器)。
- 模糊:在实时视频中对检测到的对象进行像素化处理,有助于保护隐私。
- 超时时间:设置持续时间(以秒为单位,介于 1 到 60 之间,默认为 3),摄像头在检测到移动停止后保持移动状态的时长。这有助于减少快速重复事件。
使用区域
区域对于 AI 探测器(人脸/车牌/对象识别)和对象跟踪探测器(如绊线、速度、对象跟踪)至关重要。您可以选择哪些区域将在探测器配置中触发警报,或在特定区域的警报中指定操作。
简易检测器在所有区域检测到足够的移动时会触发警报。
某些探测器类型不使用区域设置,例如 MQTT、ONVIF 或通过 API 调用触发的移动。
使用移动侦测区域
移动侦测区域是可配置的区域组,您可以命名并保存以供日后使用。要将您当前的移动侦测区域配置保存为新的区域,请点击区域旁边的编辑图标。这些工具允许您添加、编辑和删除区域。
将移动侦测区域应用于将 PTZ 摄像头移动到 PTZ 预置位位置时(使用 Agent DVR 界面):
- 创建并保存新的移动侦测区域配置,使用特定名称,如"carpark"。
- 添加新操作:
时间:"已应用 PTZ 预置位"
选择 PTZ 预置位命令(例如"转到预置位 1")。注意:您的摄像头必须支持 PTZ 预置位才能正常工作。
点击添加任务:
任务:"设置移动侦测区域"
选择您的新区域("carpark")。
点击"确定"两次。现在,每当您选择预置位,或者 Agent DVR 通过计划调度或其他事件设置预置位时,此移动侦测区域将自动应用。
您还可以使用调度器修改移动探测器区域。此功能允许根据一天中的时间、周几或特定日期使用不同的移动侦测区域配置。
HAAR对象检测器
该方法使用称为 HAAR 级联的文件来识别视频流中的对象。但是,结合 AI 服务器使用简易检测器可能会获得更好的效果。
- 帧大小:选择用于处理的帧大小。较小的帧会减少 CPU 使用率,但精度可能会降低。
- 检测间隔:设置帧处理的频率,单位为毫秒。例如,200 表示每秒 5 次,1000 表示每秒 1 次。
- 宽度限制和高度限制:定义 Agent DVR 检测的对象大小范围,以帧的宽度或高度的百分比表示。调整这些滑块将在视频上显示叠加层,指示要检测的对象大小范围。
- 使用 GPU:选项用于使用 GPU 进行处理,仅在您的 GPU 支持 Cuda 且已安装必要驱动程序时可用。
- 文件:选择 HAAR 级联文件来配置对象检测器。提供了用于检测人脸和猫脸的默认文件。
- 触发条件和警报编号:根据检测到的对象数量配置 Agent DVR 来生成警报。例如,要在识别到人脸时触发警报,将条件设置为"大于",将警报编号设置为 0。
- 警报区域:指定要包含在监控区域中的移动侦测区域。
- 检查角落:有关更多详细信息,请参阅 检查角落。
角落检查
Agent DVR 使用精进的方法来确定检测到的对象是否应该根据您的区域配置触发警报或操作。它通过检查检测到的对象的中心点,以及可选地检查从该中心点扩展到对象边界框各角的网格来实现这一点。您可以通过设置一个百分比来调整此功能,该百分比表示从中心点到边界框角的距离,用于区域检查。本质上,设置为 0 表示仅检查中心点,100 表示检查到所有角,50 表示检查到中心与边界矩形各角之间的中点。如果您收到大量事件通知,而对象似乎不在指定的区域内,那么将"检查角"设置为 0 可能会有帮助。
MQTT
您可以从MQTT服务器启动移动侦测。首先,确保您已正确设置MQTT。然后,要触发物体检测,只需将探测器配置屏幕中指示的命令传递到服务器/命令通道,其中服务器是您的服务器名称(显示在服务器菜单中,您可以在设置中编辑)。此集成允许更通用和响应式的移动侦测系统,充分利用MQTT服务器的功能。
ONVIF
许多ONVIF兼容设备都配备了自己的移动侦测功能。当你选择此模式并将其与ONVIF兼容摄像头(在Agent中使用ONVIF连接类型)配对时,Agent DVR将依靠设备本身提供移动侦测事件并根据这些事件触发操作。由于分析发生在摄像头上,这是对服务器CPU负载最轻的选项。如果你在此功能中遇到任何问题,建议检查日志(可在本地服务器的/logs.html访问),因为你的摄像头可能不支持ONVIF检测。有关配置这些设置的更多信息,请参阅服务器ONVIF设置。
- 事件超时: 重置移动侦测状态之前要等待的时间(秒)。应将其设置为高于摄像头的事件通知间隔。
人探测器
这种方法采用专门设计的算法来检测行人。但是,你可能会发现使用简易检测器并集成用于警报过滤的人工智能会提供更好的效果。
- 使用 GPU:决定是否使用 GPU 进行处理,仅当你的 GPU 支持 Cuda 且安装了必要的驱动程序时才可用。
- 帧大小:选择用于处理的帧大小。请注意,较小的帧对 CPU 的需求较低,但可能会产生较低的准确度。
- 检测间隔:设置帧处理的频率,以毫秒为单位。例如,200 等于每秒 5 次,而 1000 等于每秒 1 次。
- 触发条件和警报编号:根据检测到的人数配置生成警报的条件。例如,要在检测到人员时触发警报,请将条件设置为"大于"并在警报编号字段中输入 0。
- 警报区域:选择应在检测区域内监控的特定移动侦测区域。
- 检查角落:有关更多详细设置,请参阅检查角落。
- 置信度:检测计数所需的最低置信度级别。
Reolink
某些 Reolink 摄像头提供了一个 API 端点,Agent DVR 可以轮询该端点以接收移动侦测或 AI 警报状态。如果您的摄像头支持此功能,您可以使用此探测器。要检查您的摄像头是否具有此功能,请尝试访问 URL:http://[IP ADDRESS]/api.cgi?cmd=GetMdState&channel=0&rs=Get&user=[USERNAME]&password=[PASSWORD](将 [IP ADDRESS]、[USERNAME] 和 [PASSWORD] 替换为您摄像头的 IP 地址和登录凭证)。成功连接将返回 JSON 格式的文本,而不是错误页面。
- 间隔: 确定 Agent DVR 轮询您的摄像头以获取警报或移动侦测数据的频率。
- 通道: 要轮询的通道。对于独立摄像头,请使用 0;在 NVR 上,通道可能不同。
- 模式: 在"移动侦测"和"AI"之间选择。两种模式都会在 Agent DVR 中触发移动探测器事件,可用于录制(将录制模式设置为检测)。"AI"选项在摄像头识别特定对象类别(如 dog_cat、face、people、vehicle)时触发移动检测。
- 使用 SSL: 通过 HTTPS 连接到摄像头。
您可以配置操作,以在检测到标记为 dog_cat、face、people 或 vehicle 的对象时执行任务。
注意:要启用 AI 功能,您可能需要在摄像头的网络界面中启用跟踪,并设置最小和最大对象大小参数。然后 Agent DVR 将使用 Reolink 识别的对象标记您的录像文件。
Hikvision
海康威视摄像头提供了一个 ISAPI 端点,Agent DVR 可以监控它以接收移动侦测或 AI 警报状态。如果您的摄像头支持此功能,您可以利用此探测器。请查看您摄像头的文档,了解是否支持此功能。
- 使用 SSL: 是否为连接使用 SSL。
- 端口: Agent 将根据"使用 SSL"设置使用端口 80 或 443,但您可以在此处覆盖该设置。
- 通道: 您的摄像头正在使用的通道 - 对于摄像头,这通常是 1,但如果您有海康威视 NVR,可能会不同
- 灵敏度: 移动探测器的值,范围从 0(最低灵敏度)到 100(最高灵敏度)。
注意:当此探测器启动时,Agent DVR 会在摄像头上启用移动检测并应用上述灵敏度值。它不会改变摄像头上的其他任何东西 - 检测区域、计划和智能事件配置保持不变。如果您不想更改灵敏度,请将滑块设置为与已在摄像头上配置的值相匹配。如果您根本不希望 Agent DVR 写入摄像头,请改用 ONVIF 探测器,它只侦听事件。
这些摄像头还可以检测其他事件(如线路穿越、入侵、徘徊或区域进入)。Agent DVR 将每个事件映射到一个命名的类别,并引发带有该类别名称标签的"AI 对象发现"事件,例如:线路穿越检测、入侵检测、区域进入、区域退出、徘徊、停泊、无人看管行李。在"AI 对象发现"下添加一个 操作 并使用这些标签来筛选它。要查看您的摄像头生成的事件,请在服务器设置中将记录日志设置为调试,并在服务器菜单中检查日志。
要仅在检测到人时获取警报:在摄像头自己的网页界面中,启用智能事件(如入侵检测或线路穿越),并将目标类型设置为人(在 AcuSense 模型上),然后在"AI 对象发现"上添加一个 操作,按该事件的标签进行筛选。或者,使用 Agent DVR 自己的 对象识别 并使用人的筛选器 - 这适用于任何探测器和任何摄像头。
与 ONVIF 探测器相比:ONVIF 报告通用移动侦测的开/关状态,永远不会修改摄像头的配置,而海康威视探测器会显示摄像头的各个智能事件类型,以便您可以分别对其采取行动。在海康威视摄像头上,如果您想要摄像头的 AI 事件,请使用此探测器;如果您只想要基本移动检测,请使用 ONVIF。
速度检测
此方法使用您提供的场景信息来跟踪移动的对象,估计它们的速度,并在对象移动过快或过慢时生成警报。
- 高级: 有关更详细的设置,请参考下方的高级部分。
- 宽度限制和高度限制: 定义场景中对象检测的尺寸范围,值以场景宽度或高度的百分比表示。调整这些滑块将在视频上显示叠加层,指示对象的目标尺寸范围。
- 最小移动距离: 设置对象必须移动的最小距离才能被视为处于移动中,以场景宽度的百分比为基准。
- 最长时间: 指定对象必须保持运动以被跟踪的时间间隔,单位为秒的十分之一(例如,1 = 0.1 秒,10 = 1 秒)。
- 速度单位: 为叠加层选择首选的速度测量单位。
- 速度限制: 确定速度检测的下限和上限。超出此范围的移动将触发移动侦测事件。
- 水平和垂直距离: 输入场景中的总距离(以米为单位)。Agent DVR 使用此测量值来计算移动对象的速度。
- 警报区域: 选择要包括在监控区域中的移动侦测区域。
- 检查角落: 如需更多设置,请参考检查角落。
对象跟踪
该探测器识别并跟踪移动对象,根据对象在场景中的持续时间和移动距离来触发移动侦测事件。
- 高级: 有关更详细的设置和选项,请参阅下方的高级部分。
- 宽度限制和高度限制: 指定对象检测的尺寸范围,数值以场景宽度或高度的百分比表示。调整这些滑块将在视频上叠加目标对象尺寸范围的视觉表示。
- 最小移动距离: 定义对象必须移动以被识别为移动对象的最小距离,相对于场景的宽度。
- 最长时间: 设置对象被考虑进行跟踪必须保持运动的最短时间持续时间,以十分之一秒为单位(例如,1 = 0.1 秒,10 = 1 秒)。
- 显示总数: 在实时视频源中添加计数器以跟踪移动对象。
- 热力图: 通过向被跟踪对象添加线条来可视化随时间变化的移动模式。
- 警报区域: 选择哪些移动侦测区域应包含在监视区域中。
- Check Corners: 有关其他信息,请参阅检查角落。
当 Agent DVR 监视和跟踪场景中的移动时,它会在检测到的对象周围显示彩色矩形。这些颜色的含义如下:
- 白色: 对象刚被检测到并在考虑中。
- 黄色: 对象在多个帧中被检测到。
- 橙子: 对象的移动至少达到跟踪设置中指定的最长时间。
- 红色: 对象已满足所有跟踪要求以触发移动侦测事件。
绊线
此探测器识别并跟踪移动的对象,当对象穿过场景中预定义的绊线时触发移动侦测事件。将其用于线条穿过检测,例如当某人穿过围栏线或通过门进入时获取警报。要添加绊线,只需在实时视频上点击并拖动。您可以创建最多 10 条绊线。要删除绊线,点击并拖动其中一个点到场景外。
方向:绊线有一个方向,由箭头表示(v7.7.4.0+)。沿着绊线从开始绘制的点指向箭头方向看,左和右是绊线的两侧;编辑器用 L 和 R 标记它们。穿过绊线左侧的对象为左穿过,穿过右侧的为右穿过。要交换哪一侧是哪一侧,可以拖动绊线的两个端点进行交换,或删除后以相反方向重新绘制。这对水平、竖直和斜向绊线的工作方式相同。v7.7.4.0 之前绘制的绊线保持它们原有的左/右行为。
- 高级: 有关更详细的设置和选项,请参阅下方的高级部分。
- 宽度限制和高度限制:设置要检测的对象的尺寸范围,其值表示为场景宽度或高度的百分比。调整这些滑块将在视频上叠加显示目标尺寸范围的视觉表示。
- 最小移动距离:指定对象必须移动的最小距离才能被识别为移动对象,相对于场景的宽度。
- 最长时间:定义对象必须处于运动状态才能被跟踪的最小时间持续时间,以十分之一秒为单位(例如,1 = 0.1 秒,10 = 1 秒)。
- 重复触发:启用此选项可允许对象多次触发同一绊线。默认情况下,对象只能触发一次绊线。
- 计数方向:计数穿过绊线的对象方向:左、右、两个方向(分别计数左右穿过)或总计(一个合并计数)。计数显示在实时视频中每条绊线旁边,可以导出(见下文)。设置为无可禁用计数。
- 重置计数:将所有穿过计数器重置为零。摄像头重启时计数器也会重置。
- 警报方向:当绊线在此方向穿过时生成警报,或两个方向表示任意方向。设置为无可在不发出警报的情况下计数。
- 警报区域: 选择要包括在监控区域中的移动侦测区域。
- Check Corners: 有关其他信息,请参阅检查角落。
计数人员和导出计数
要计数经过门道或门闸的人员(或车辆),将计数方向设置为两个方向,并在门道上绘制绊线,使"进"在一侧,"出"在另一侧;编辑器中的 L 和 R 标签显示哪一侧是哪一侧。当被追踪对象的中心穿过绊线时,穿过被记录。在对象满足最短时间和最小移动距离要求之前发生的穿过会被保留,并在满足时立即计数,因此靠近场景边缘的绊线仍然有效,但在两侧给绊线尽可能多的空间,并为繁忙的门道保持最小移动距离和最短时间较低。(v7.7.4.0+)
计数在三个地方可用:
- 操作标签:在摄像头的任何操作中使用{TRIPCOUNT}、{TRIPCOUNTLEFT}、{TRIPCOUNTRIGHT}和{TRIPJSON},例如警报事件上的 MQTT 或呼叫 URL 任务。将上方的警报方向设置为您要操作的方向,在摄像头的警报选项卡上,将重置模式设置为间隔,间隔为 1 秒,以防止连续穿过合并为一个警报(默认 60 秒会忽略一分钟内跟随的任何人)。
- MQTT 事件:在摄像头上启用了MQTT 事件后,每个计数穿过都会发布一条消息到SERVER/cameras/NAME/tripwire,包含绊线编号、方向和运行总数,当前总数发布(保留)到SERVER/cameras/NAME/tripwire_left、tripwire_right和tripwire_total。见自动 MQTT。
- Home Assistant:启用了Home Assistant 发现后摄像头获得计数左、计数右和计数总传感器。
要从自动化(例如午夜)重置计数器,请调用API命令resettripwires,例如
http://localhost:8090/command/resettripwires?ot=2&oid=1 或通过MQTT发送cmd=resettripwires&ot=2&oid=1。
通过 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 使用率,但准确度最低。
- CSRT: 最准确的选项,但 CPU 使用率也更高(默认)。
- 最大对象数: 设置同时跟踪的对象数量的限制。对象越多,CPU 使用率越高。
- 检测间隔: 定义移动侦测的帧处理频率(以毫秒为单位)(例如,200 表示每秒 5 次,1000 表示每秒 1 次)。
- 跟踪间隔: 设置追踪器处理频率。较高的间隔可能会漏掉快速移动的对象(例如,200 表示每秒 5 次,1000 表示每秒 1 次)。
- 像素稳定性: 确定将像素视为稳定所需的样本数,以及像素因保持相同颜色而能获得的最大'信用'。这些设置对有效的背景减除和位移检测至关重要。 更多信息
- 使用历史记录: 启用此功能可学习场景中持续移动的对象。通常建议保持禁用状态,除非必要。
- 并行处理: 在移动侦测算法中激活并行处理。建议保持启用状态。
- 跟踪超时: 指定在停止跟踪对象前等待其重新出现的时间(以秒为单位)。
- 位移超时: 设置在停止其跟踪前等待静止对象重新移动的持续时间(以秒为单位)。