我正在寻找一种实时执行对象跟踪的良好算法。
到目前为止,我发现的最好的相机是camshift,但是问题是我需要从外部图像中进行物体检测(我给算法提供了图像,他在视频中找到了它...),camshift需要用鼠标选择ROI点。我试图进行更改,但未成功。
我愿意学习新算法或更改camshift。

谢谢。

最佳答案

我不太了解camshift,但是我猜您正在使用opencv实现。下面的代码是opencv示例的片段:

        hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
        dst = cv2.calcBackProject([hsv],[0],roi_hist,[0,180],1)

        # apply meanshift to get the new location
        ret, track_window = cv2.CamShift(dst, track_window, term_crit)
对于第一个图像,选择与帧大小一样大的dst应该可以解决您的问题。否则,您可以使用滑动窗口方法在第一帧中定位目标。
另一方面,术语“实时”实际上取决于您在以下方面的要求和部署环境:

输入视频的
  • 帧速率
  • 帧的分辨率
  • 框架的
  • 配色方案(rgb,yuv,灰色,hsv等)
  • 最大/最小目标大小
  • 最大目标速度(像素/帧)
  • 对遮挡是否应具有鲁棒性?
  • 目标的最具体属性是什么:汽车,人类/动物,固体物体,形状变化,转弯,...
  • 您使用的是CPU,DSP还是GPU?
  • ...

  • 由于以上所有考虑因素实际上对您的选择都是有效的,因此我不建议您使用特定的考虑因素。 This one例如可能有用。
    我会研究IEEE explore并进行诸如real time object tracking的搜索。我为您做了一个:) Here是您最好的起点。
    希望这可以帮助。
    哥汗

    10-07 15:25