您好我正在使用HOG和Haar Cascade的OpenCV实施来执行行人检测并将其限制在视频输入上。
但是,我想为每个进入视频供稿的行人分配一个唯一ID(数字),其ID保持不变,直到行人离开视频供稿。由于帧是一个接一个地处理而不考虑前一帧,我不确定如何以最简单但有效的方式实现它。
我是否真的需要使用像camshift或Kalman这样的跟踪算法,其中我不知道并且可以真正使用一些帮助。或者有没有更简单的方法来实现我想要的目标?
P / S:这video是我想要实现的目标。事实上,我之前在这里发布了一个类似的问题,但更多的是针对检测技术,这是指向分配唯一标识符的下一步。
答案 0 :(得分:2)
一个简单的解决方案:
在矢量中跟踪对象。
如果计算新帧,则为每个对象:搜索存储在Vector中的最近对象。如果存储对象与当前对象之间的距离低于某个阈值,则它是相同的对象。
如果未找到匹配,则对象是新的。最后,删除Vector中与当前帧的Object无关的所有对象。
答案 1 :(得分:1)
当您使用detectMultiScale
获取匹配项时,您将拥有std:Vector<cv:Rect>
结构,该结构将包含所有检测到的行人。在迭代它们进行绘制时,您可以为每个被检测的唯一cv::Rect
分配一个数字(您可能需要为此编写一个稍微深一点的测试,以检查重叠的矩形)然后可以绘制(让我们说相应矩形的顶部。
HTH