我正在使用 Xamarin.OpenCV.Droid ,
,我想将Point
的数组转换为Mat
。
我知道Converters
类有几种方法似乎足以进行转换。
但是,我完全不了解Vector_Point_to_Mat
和Vector_Point2f_to_Mat
之间的区别。
这两个方法都将Point[]
作为参数接收并返回Mat
。
有什么区别?
例如哪个更适合执行Imgproc.GetPerspectiveTransform
?
答案 0 :(得分:1)
在C ++版本中,有基于int,int64,float和double的Point类型。
typedef Point_<int> Point2i;
typedef Point_<int64> Point2l;
typedef Point_<float> Point2f;
typedef Point_<double> Point2d;
在基于Java的OpenCV中,只有Point
(基于双精度),但是Java vector_Point(| 2d | 2f)_to_Mat API会创建具有相应CvType的Mat(通过native / C ++)致电):
CvType.CV_32SC2 (vector_Point_to_Mat)
CvType.CV_32FC2 (vector_Point2f_to_Mat)
CvType.CV_64FC2 (vector_Point2d_to_Mat)
有关类型的信息:请参见:What's the difference between cvtype values in OPENCV?
public static Mat vector_Point_to_Mat(List<Point> pts) {
return vector_Point_to_Mat(pts, CvType.CV_32S);
}
public static Mat vector_Point2f_to_Mat(List<Point> pts) {
return vector_Point_to_Mat(pts, CvType.CV_32F);
}
public static Mat vector_Point2d_to_Mat(List<Point> pts) {
return vector_Point_to_Mat(pts, CvType.CV_64F);
}