var imagePoint1 = new List<Point2f>();
var imagePoint2 = new List<Point2f>();
for (int i = 0; i < matchePoints.Length; i++)
{
imagePoint1.Add(keyPoints1[matchePoints[i].QueryIdx].Pt.ToPoint());
imagePoint2.Add(keyPoints2[matchePoints[i].TrainIdx].Pt.ToPoint());
}
Mat homo = Cv2.FindHomography(imagePoint2, imagePoint1, HomographyMethods.Ransac);
参考的是这篇文章:https://www.jb51.net/article/169211.htm
题主代码明显没看仔细,少了转换
// 算法RANSAC对匹配的结果做过滤
var pSrc = pointsSrc.ConvertAll(Point2fToPoint2d);
var pDst = pointsDst.ConvertAll(Point2fToPoint2d);
根据文章代码应该大概如下,要转换为Point2fToPoint2d的集合
var imagePoint1 = new List<Point2f>();
var imagePoint2 = new List<Point2f>();
for (int i = 0; i < matchePoints.Length; i++)
{
imagePoint1.Add(keyPoints1[matchePoints[i].QueryIdx].Pt.ToPoint());
imagePoint2.Add(keyPoints2[matchePoints[i].TrainIdx].Pt.ToPoint());
}
///////转换
var pSrc = imagePoint1 .ConvertAll(Point2fToPoint2d);
var pDst = imagePoint2 .ConvertAll(Point2fToPoint2d);
Mat homo = Cv2.FindHomography(pSrc, pDst, HomographyMethods.Ransac);