我正在尝试使用OpenCV和C++实现功能/对象跟踪应用程序。目前,我正在使用goodFeaturesToTrack
函数从第一帧创建特征 vector 。从那里,我将其传递给calcOpticalFlowPyrLk
方法以跟踪后续帧中的点。
该方法相当快,但不稳定,并且缩放或旋转不变。要素倾向于一起漂移,迷路并锁定场景中的另一个角落。我已经阅读了很多有关FREAK的内容,这似乎是一个有吸引力的选择。希望它将解决我的稳定性问题以及缩放和旋转不变。
在尝试寻求有关实现FREAK功能提取器的帮助时,我遇到了this,这使我寄予了厚望,但正如您可能已经注意到的那样,该文件已脱机!我只是想知道是否有人保存了示例或对在哪里可以找到可以学习和学习的替代源代码有任何建议?
最佳答案
OpenCV在this link处有一个演示FREAK的示例。 FREAK是一个特征提取器,与其他任何特征一样,并且公开相同的接口(interface)。 FREAK无法检测特征,因此您必须使用其他方法(例如cv::goodFeaturesToTrack()
)来检测兴趣点。
该示例的摘要如下:
cv::Mat image; //This is the image
std::vector<cv::KeyPoint> keypoints; // This comes from your feature detector of choice
cv::Mat descriptors;
cv::FREAK freak;
freak.compute(image, keypoints, descriptors);
// Now "descriptors" contains descriptor data for the input keypoints.