我正在尝试将 double[][] 转换为 MatOfPointOpenCV 。 pointsOrdered 是一个 double[4][2],其中包含四个点的坐标。
我试过:

MatOfPoint sourceMat =  new MatOfPoint();
for (int idx = 0; idx < 4; idx++) {
    (sourceMat.get(idx, 0))[0] = pointsOrdered[idx][0];
    (sourceMat.get(idx, 0))[1] = pointsOrdered[idx][1];
}

sourceMat 值保持不变。
我正在尝试一一添加值,因为我还没有找到其他选项。

我能做什么?有没有一种简单的方法来访问和修改 MatOfPoint 变量值?

最佳答案

org.opencv.core.MatOfPoint 需要 org.opencv.core.Point 对象,但它存储 Point 的属性值 (x,y) 而不是 Point 对象本身

如果您将 double[][] pointsOrdered 数组转换为 ArrayList<Point>

ArrayList<Point> pointsOrdered = new ArrayList<Point>();
pointsOrdered.add(new Point(xVal, yVal));
...

然后你可以从这个 MatOfPoint 创建 ArrayList<Point>
MatOfPoint sourceMat = new MatOfPoint();
sourceMat.fromList(pointsOrdered);
//your sourceMat is Ready.

10-08 20:05
查看更多