Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opencv 具有唯一标识符的行人检测_Opencv_Detection_Video Tracking - Fatal编程技术网

Opencv 具有唯一标识符的行人检测

Opencv 具有唯一标识符的行人检测,opencv,detection,video-tracking,Opencv,Detection,Video Tracking,您好,我目前正在使用HOG和Haar Cascade的OpenCV实现来执行行人检测,并将其绑定到视频提要上 但是,我想为每个进入视频源的行人分配一个唯一的id(编号),在行人离开视频源之前,id保持不变。由于帧被一个接一个地处理,而不考虑前一帧,我不确定如何以最简单但有效的方式实现这一点 我真的需要使用像camshift或Kalman这样的跟踪算法吗?在这些算法中,我不知道,也确实需要一些帮助。或者有没有更简单的方法来实现我想要的 这就是我想要实现的目标。事实上,我之前在这里发布了一个类似的问

您好,我目前正在使用HOG和Haar Cascade的OpenCV实现来执行行人检测,并将其绑定到视频提要上

但是,我想为每个进入视频源的行人分配一个唯一的id(编号),在行人离开视频源之前,id保持不变。由于帧被一个接一个地处理,而不考虑前一帧,我不确定如何以最简单但有效的方式实现这一点

我真的需要使用像camshift或Kalman这样的跟踪算法吗?在这些算法中,我不知道,也确实需要一些帮助。或者有没有更简单的方法来实现我想要的


这就是我想要实现的目标。事实上,我之前在这里发布了一个类似的问题,但更多的是针对检测技术,这是针对分配唯一标识符的下一步

当您使用
detectMultiScale
获取匹配项时,您将拥有一个
std:Vector
结构,该结构将包含所有检测到的行人。在遍历它们进行绘制时,您可以为检测到的每个唯一的
cv::Rect
指定一个编号(您可能需要为此编写更深入的测试,以检查重叠的矩形),然后您可以绘制相应矩形的编号(比如在顶部)

HTH

一个简单的解决方案:

在矢量中跟踪对象。
如果计算新帧,则对于每个对象:搜索存储在向量中最近的对象。如果存储对象和当前对象之间的距离低于某个阈值,则该对象是同一对象


如果未找到匹配项,则对象为新对象。最后,删除向量中与当前帧的对象无关的所有对象。

是的,这称为跟踪。无意冒犯,但您误解了我的问题。我可以为detectMultiScale返回的每个Rect分配一个唯一标识符。问题出现在下一帧中,在上一帧中检测到的人可能已经移动,那么我如何确保同一个人仍然拥有我在上一帧中分配给他的相同唯一id(而不是重新分配给他一个新的唯一id)。哦,我想我没有说清楚。您需要将Rect作为一个全局变量(正如@Mailerdaimon所建议的那样)。我在第一次阅读时也没有得到这一点。也许你可以把你的答案改写得更清楚些+1为良好方法;)别担心,你写的正是我的意思谢谢你的建议。我以前想过这个,但我担心的是:如果探测器在某一帧中“漏掉”了这个人,那么“最近的物体”方法会认为这个人已经离开了视频提要。你可以为每个物体创建一个计数器。如果计数器达到某个值->放弃对象。因此,在一定数量的帧内观看,只有当对象丢失太久时,才丢弃它。到目前为止,这并不是一种非常稳健的做事方式,这就是为什么我写了“简单解决方案”;-)是的,这确实是一个很好且简单的解决方案:)。如果你不介意我问你,你知道做我想做的事情的其他更可靠的方法吗?一个更复杂的方法是使用卡尔曼滤波器,正如你在问题中提到的那样。你可以看看这个Matlab实现,看看它是如何工作的:哦,我确实在不久前偶然发现了Kalman,但我完全不知道如何将它与我的HOG或Haar行人检测方法一起使用。有适合我的案例的好代码教程吗?我用的是C++ OpenCV BTW.