C# + OpencvSharp开发过程中遇到的问题点记录。
问题场景:四组对应点集(fromInput和toInput)计算射影矩阵。
var fromInput = InputArray.Create(CoordinatesRead.Marks);
var toInput = InputArray.Create(CoordinatesNow.Marks);
var homMat2D2 = Cv2.GetPerspectiveTransform(fromInput, toInput);
报错原因:OpencvSharp中的Cv2.GetPerspectiveTransform()需要输入点集坐标数据类型为float32。即Point2f。而我实际输入的点集的数据类型为Point2d。故报错。
解决方式:未找到好的解决办法。采用计算仿射矩阵的Cv2.EstimateAffine2D()。该函数的输入点集坐标数据类型可以为Point2f也可以为Point2d。
var homMat2D = Cv2.EstimateAffine2D(fromInput, toInput);