我在使用SIFT特征检测器进行实时对象匹配时遇到了一些问题。 这是我的视频解决方案。
首先,我创建了一个结构来存储匹配的关键点。该结构包含templateImage中关键点的位置,inputImage中关键点的位置和相似性度量。这里我将向量的互相关用作相似性度量。
struct MatchedPair
{
Point locationinTemplate;
Point matchedLocinImage;
float correlation;
MatchedPair(Point loc)
{
locationinTemplate=loc;
}
}
我将根据匹配的关键点的相似性选择排序方式,因此我需要一个帮助程序函数,该函数将告诉std::sort()如何比较我的MatchedPair对象。
bool comparator(MatchedPair a,MatchedPair b)
{
return a.correlation>b.correlation;
}
现在,主要代码开始。 我使用标准方法从输入图像和templateImage中检测和解密特征。计算特征后,我实现了自己的匹配功能。 这是您要寻找的答案
int main()
{
Mat templateImage = imread("template.png",IMREAD_GRAYSCALE); // read a template image
VideoCapture cap("input.mpeg");
Mat frame;
vecto