From 17d88783c251e72f2fc0d963440f849f9811c2cd Mon Sep 17 00:00:00 2001 From: Andrey Pavlenko Date: Mon, 9 Apr 2012 08:31:28 +0000 Subject: [PATCH] Java API: fixing more tests --- .../test/features2d/Features2dTest.java | 36 +++++++++++-------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/modules/java/android_test/src/org/opencv/test/features2d/Features2dTest.java b/modules/java/android_test/src/org/opencv/test/features2d/Features2dTest.java index 0d21961b17..5b815fd145 100644 --- a/modules/java/android_test/src/org/opencv/test/features2d/Features2dTest.java +++ b/modules/java/android_test/src/org/opencv/test/features2d/Features2dTest.java @@ -1,8 +1,15 @@ package org.opencv.test.features2d; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + import org.opencv.calib3d.Calib3d; import org.opencv.core.CvType; import org.opencv.core.Mat; +import org.opencv.core.MatOfDMatch; +import org.opencv.core.MatOfKeyPoint; +import org.opencv.core.MatOfPoint2f; import org.opencv.core.Point; import org.opencv.core.Range; import org.opencv.features2d.DMatch; @@ -15,10 +22,6 @@ import org.opencv.highgui.Highgui; import org.opencv.test.OpenCVTestCase; import org.opencv.test.OpenCVTestRunner; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - public class Features2dTest extends OpenCVTestCase { public void testDrawKeypointsMatListOfKeyPointMat() { @@ -93,8 +96,8 @@ public class Features2dTest extends OpenCVTestCase { Mat imgTrain = Highgui.imread(OpenCVTestRunner.LENA_PATH, Highgui.CV_LOAD_IMAGE_GRAYSCALE); Mat imgQuery = imgTrain.submat(new Range(0, imgTrain.rows() - 100), Range.all()); - List trainKeypoints = new ArrayList(); - List queryKeypoints = new ArrayList(); + MatOfKeyPoint trainKeypoints = new MatOfKeyPoint(); + MatOfKeyPoint queryKeypoints = new MatOfKeyPoint(); detector.detect(imgTrain, trainKeypoints); detector.detect(imgQuery, queryKeypoints); @@ -108,22 +111,27 @@ public class Features2dTest extends OpenCVTestCase { extractor.compute(imgTrain, trainKeypoints, trainDescriptors); extractor.compute(imgQuery, queryKeypoints, queryDescriptors); - List matches = new ArrayList(); + MatOfDMatch matches = new MatOfDMatch(); matcher.add(Arrays.asList(trainDescriptors)); matcher.match(queryDescriptors, matches); // OpenCVTestRunner.Log("Matches found: " + matches.size()); - List points1 = new ArrayList(); - List points2 = new ArrayList(); - - for (int i = 0; i < matches.size(); i++) { - DMatch match = matches.get(i); - points1.add(trainKeypoints.get(match.trainIdx).pt); - points2.add(queryKeypoints.get(match.queryIdx).pt); + DMatch adm[] = matches.toArray(); + List lp1 = new ArrayList(adm.length); + List lp2 = new ArrayList(adm.length); + KeyPoint tkp[] = trainKeypoints.toArray(); + KeyPoint qkp[] = queryKeypoints.toArray(); + for (int i = 0; i < adm.length; i++) { + DMatch dm = adm[i]; + lp1.add(tkp[dm.trainIdx].pt); + lp2.add(qkp[dm.queryIdx].pt); } + MatOfPoint2f points1 = new MatOfPoint2f(lp1.toArray(new Point[0])); + MatOfPoint2f points2 = new MatOfPoint2f(lp2.toArray(new Point[0])); + Mat hmg = Calib3d.findHomography(points1, points2, Calib3d.RANSAC, 3); assertMatEqual(Mat.eye(3, 3, CvType.CV_64F), hmg, EPS);