【发布时间】:2014-04-08 02:19:31
【问题描述】:
我的 Android OpenCV 项目中有一个二维数组类型 Mat,我需要以与 MATLAB sortrows 函数相同的方式对数组进行排序。我发现Core.sort() 函数采用Sort_Every_Row 之类的标志。这似乎是我想要的,但是当我使用这种方法时,我得到的输出结果与我从 MATLAB 得到的结果不同。
是否有任何其他功能,或任何其他方式来进行这种排序?我必须从头开始编写方法吗?
下面是我用于对数组 FeatureMatirx 进行排序的行:
Core.sort(FeatureMatrix, FeatureMatrix, Core.SORT_EVERY_ROW);
编辑: 让我用一个简单的例子来解释一下:
Mat test = new Mat(4,3, CvType.CV_64FC1);
test.put(0, 0, 1);
test.put(0, 1, 2);
test.put(0, 2, 3);
test.put(1, 0, 1);
test.put(1, 1, 1);
test.put(1, 2, 1);
test.put(2, 0, 2);
test.put(2, 1, 1);
test.put(2, 2, 3);
test.put(3, 0, 1);
test.put(3, 1, 2);
test.put(3, 2, 1);
Core.sort(test, test,Core.SORT_EVERY_ROW + Core.SORT_ASCENDING);
for (int k = 0; k < test.rows(); k++) {
Log.i("Test", test.get(k, 0)[0] + " " + test.get(k, 1)[0]+ " " +test.get(k, 2)[0]);
}
上面例子的结果是这样的:
03-05 21:32:01.893: I/Test(1323): 1.0 2.0 3.0
03-05 21:32:01.893: I/Test(1323): 1.0 1.0 1.0
03-05 21:32:01.893: I/Test(1323): 1.0 2.0 3.0
03-05 21:32:01.893: I/Test(1323): 1.0 1.0 2.0
但是matlab中的排序结果如下:
1 1 1
1 2 1
1 2 3
2 1 3
【问题讨论】:
标签: android matlab sorting opencv