我正在做一些机器学习项目,我用卡尔曼滤波器跟踪器跟踪了人们。我想计算每个人在视频中的时间。
我尝试使用以下逻辑:假设人出现在 5 帧中并且视频 FPS 为 15,那么我们可以说此人在视频中持续 75 秒 (5*15)。
注意:-我假设并硬编码了代码中的 FPS 值。我没有找到任何方法来获取 FPS,因为我正在传递视频帧进行跟踪。
但问题是,如果我对 FPS 值进行硬编码,那么每当 FPS 发生变化时(我不知道是什么时候),我必须更改代码,否则会给出错误的结果。
我正在做一些机器学习项目,我用卡尔曼滤波器跟踪器跟踪了人们。我想计算每个人在视频中的时间。
我尝试使用以下逻辑:假设人出现在 5 帧中并且视频 FPS 为 15,那么我们可以说此人在视频中持续 75 秒 (5*15)。
注意:-我假设并硬编码了代码中的 FPS 值。我没有找到任何方法来获取 FPS,因为我正在传递视频帧进行跟踪。
但问题是,如果我对 FPS 值进行硬编码,那么每当 FPS 发生变化时(我不知道是什么时候),我必须更改代码,否则会给出错误的结果。
我的建议是计算处理每个捕获的帧的经过时间,并维护一个累加器来计算每个检测到的人的屏幕上时间。对于此类项目,帧速率取决于您执行的处理量。
您不需要对 fps 进行硬编码,实际上您也不需要 fps。我相信您的跟踪器会为检测到的每个人分配唯一的 ID。一旦你有了 id,你就可以开始计算那个 id 的秒数了。一旦该人移出框架,跟踪器 ID 将丢失,您可以停止计时器,因此您将获得该人在框架中花费的总时间。
看看这段代码:https ://github.com/mailrocketsystems/AIComputerVision/blob/master/dwell_time_calculation.py
也许这个视频可以解释: https ://www.youtube.com/watch?v=qn26XSinYfg