基本上我想检测一个物体,而不是在视频中逐帧追踪它。
我可以在第一帧上检测到它,例如ORB或SIFT。但对于下一帧(或说下一个XX帧),我想避免再次计算所有关键点(ORB或SIFT)来再次检测它。
考虑到我想在视频中实时跟踪它,我该怎么办?
答案 0 :(得分:7)
常见的选择是使用 patchtracker 。这意味着您只需搜索前一帧关键点周围8个像素区域中的关键点。您可以执行关键点周围区域的cv::matchTemplate()
,而不是使用SIFT。
执行金字塔搜索有助于提高帧速率。如果找不到比例尺加倍的关键点,则首先以较低的比例搜索。
如果补丁程序失败,因为图像移动太快,您只需再次应用SIFT重新初始化系统。我会使用FAST而不是SIFT。您可以使用SIFT作为标记,然后使用FAST实时检测关键点,生成SIFT描述符。
答案 1 :(得分:5)
检测和跟踪视频中的对象是一个非常大的主题,并且高度依赖于您的应用程序。没有灵丹妙药! 如果您实现了检测部分,您可以尝试通过手段跟踪颜色(可能是HSV颜色空间)可能性,如果您需要跟踪的对象是彩色的..,或尝试模板匹配,或者..您需要更具体的需要。
答案 2 :(得分:4)
您可以使用OpticalFlow进行简单跟踪,以下是执行此操作的步骤...
答案 3 :(得分:0)
您可以使用TLD或CLM实现近乎完美和实时的跟踪。一旦检测到感兴趣的对象,就使用该边界框来启动捕食者跟踪。 你可以在这里找到关于CMT的信息 https://www.gnebehay.com/cmt/
和TLD在这里 https://www.gnebehay.com/tld/