1

我正在尝试使用来自opencv for android的stereouncalibratedrectify

我没有找到在java中从List转换为Mat的方法,但是在opencv c++中我们可以从vector创建一个Mat

这是我做的步骤:

//find fundamental matrix
//srcmatchkey and dstmatchkey are List<Point> as required in findFundamentalMat function,    

they have been calculated using FLANN Matcher


Cali3D.findFundamentalMat(srcMatchKey, dstMatchKey, Calib3d.FM_8POINT);

//this is the strange part

Calib3D.stereoRectifyUncalibrated(Mat points1,Mat,points1,Mat fundamentalMatrix,Mat H1,Mat H2)

据我了解,Mat points1 和 Mat points2 是由 srcMatchKey 和 dstMatchKey 制成的 Mat(或者我错了吗??,如果错误请更正)并且没有 Mat 构造函数接受 List 或类似 c++ 中的向量, Mat c++ 有。

所以问题是有没有办法在android中从List创建Mat?感谢您的帮助...

4

1 回答 1

3

如果您使用适用于 Android 的 OpenCV 2.3.1,则将 List 转换为 Mat 的代码为:

  List<Point> lp = null;
  Mat mp = Converters.vector_Point_to_Mat(lp);

或谈论stereoRectifyUncalibrated()它可以是:

  Mat mp = Converters.vector_Point2d_to_Mat(lp);

在 Android 的 OpenCV 2.4.beta(最近发布)中,所有List<T>类型都被替换为MatOfT阻止在 Native 和 Java 之间来回复制数据的类型。

于 2012-04-13T13:04:36.063 回答