我正在使用lucas-kanade opencv实现来跟踪帧之间的对象。我希望能够做以下两件事:
我已经获得了使用cv2.goodFeaturesToTrack()
进行跟踪的功能。我还将对象的边界框添加到要跟踪的要素中。现在我正在使用以下方法计算点之间的距离
np.sqrt(np.square(new_pts - old_pts).sum(axis=1).sum(axis=1))
。我不太确定这是否是正确的方法,因为new_pts中的点的索引可能不同。
假设old_pts中的每个索引都与new_pts数组中的相同功能相对应?
第二,有没有一种方法可以使用lucas kanade跟踪跨框的边框?
答案 0 :(得分:0)
在new_pts中,点具有相同的索引。但是它们无法建立-请参阅状态数组:如果status [i] == 1,则new_pts [i]包含old_pts [i]的新坐标。
为获得更高的鲁棒性,可以搜索直流(goodFeaturesToTrack(frame1)-> LK流),后向流量(goodFeaturesToTrack(frame2)-> LK流),并保留两个方向上坐标相等的点。