我正在使用 openCV 做一个项目,其中我将两个图像与 SIFT 关键点匹配,并使用 K 最近邻搜索从相同的图像中获得了良好的匹配。其中k=2。
现在我想获取在image2中匹配良好的SIFT关键点的坐标值,以及Image2中相应关键点的坐标值。任何机构都可以帮助我解决这个问题。谢谢。
我找到了解决方案......这很容易......我很傻......我只是将关键点转换为 CvPoints,从中我可以轻松获得坐标值......
全部..我已经解决了问题...首先我将匹配良好的关键点转换为 Cvpoints,然后从 Cvpoints 中获取坐标..相同的代码如下 -
for( i =0; i <good_matches.size(); i++ )
{
// the keypoints from the good matches only
points1.push_back( keypoints1[ good_matches[i].queryIdx ].pt );
points2.push_back( keypoints2[ good_matches[i].trainIdx ].pt );
printf("xco-ordinate of good mathched keypoints in image1 %d\n\n",points1[i].x);
printf("y co-ordinate for image 1 %d \n\n",points1[i].y);
printf("x co-ordinate for image2 %d \n\n",points2[i].x);
printf("y co-ordinate for image2 %d\n\n",points2[i].y);
}
您可以使用 CvKNearest::find_nearest(...) 获取相邻向量。我相信您正在寻找参数邻居。
参考:
较旧的文档,但带有代码示例:
http://opencv.willowgarage.com/documentation/cpp/k_nearest_neighbors.html