Commit 36890cc9 authored by Andrey Pavlenko's avatar Andrey Pavlenko

(#1636) Java API: adding undistortPoints() support and smoke test; minor improvements in Java stuff

parent b232ffcd
...@@ -656,9 +656,9 @@ CV_EXPORTS_W Mat getDefaultNewCameraMatrix( InputArray cameraMatrix, Size imgsiz ...@@ -656,9 +656,9 @@ CV_EXPORTS_W Mat getDefaultNewCameraMatrix( InputArray cameraMatrix, Size imgsiz
bool centerPrincipalPoint=false ); bool centerPrincipalPoint=false );
//! returns points' coordinates after lens distortion correction //! returns points' coordinates after lens distortion correction
CV_EXPORTS void undistortPoints( InputArray src, OutputArray dst, CV_EXPORTS_W void undistortPoints( InputArray src, OutputArray dst,
InputArray cameraMatrix, InputArray distCoeffs, InputArray cameraMatrix, InputArray distCoeffs,
InputArray R=noArray(), InputArray P=noArray()); InputArray R=noArray(), InputArray P=noArray());
template<> CV_EXPORTS void Ptr<CvHistogram>::delete_obj(); template<> CV_EXPORTS void Ptr<CvHistogram>::delete_obj();
......
...@@ -55,7 +55,7 @@ public class UtilsTest extends OpenCVTestCase { ...@@ -55,7 +55,7 @@ public class UtilsTest extends OpenCVTestCase {
public void testMatToBitmap() { public void testMatToBitmap() {
Mat imgBGR = Highgui.imread( OpenCVTestRunner.LENA_PATH ); Mat imgBGR = Highgui.imread( OpenCVTestRunner.LENA_PATH );
assertTrue(imgBGR.channels() == 3); assertTrue(imgBGR != null && !imgBGR.empty() && imgBGR.channels() == 3);
Mat m16 = new Mat(imgBGR.rows(), imgBGR.cols(), CvType.CV_8UC4); Mat m16 = new Mat(imgBGR.rows(), imgBGR.cols(), CvType.CV_8UC4);
Mat m32 = new Mat(imgBGR.rows(), imgBGR.cols(), CvType.CV_8UC4); Mat m32 = new Mat(imgBGR.rows(), imgBGR.cols(), CvType.CV_8UC4);
...@@ -71,7 +71,7 @@ public class UtilsTest extends OpenCVTestCase { ...@@ -71,7 +71,7 @@ public class UtilsTest extends OpenCVTestCase {
// RGBA // RGBA
Mat imgRGBA = new Mat(); Mat imgRGBA = new Mat();
Imgproc.cvtColor(imgBGR, imgRGBA, Imgproc.COLOR_BGR2RGBA); Imgproc.cvtColor(imgBGR, imgRGBA, Imgproc.COLOR_BGR2RGBA);
assertTrue(imgRGBA.channels() == 4); assertTrue(!imgRGBA.empty() && imgRGBA.channels() == 4);
bmp16.eraseColor(Color.BLACK); m16.setTo(s0); bmp16.eraseColor(Color.BLACK); m16.setTo(s0);
Utils.matToBitmap(imgRGBA, bmp16); Utils.bitmapToMat(bmp16, m16); Utils.matToBitmap(imgRGBA, bmp16); Utils.bitmapToMat(bmp16, m16);
...@@ -89,7 +89,7 @@ public class UtilsTest extends OpenCVTestCase { ...@@ -89,7 +89,7 @@ public class UtilsTest extends OpenCVTestCase {
// RGB // RGB
Mat imgRGB = new Mat(); Mat imgRGB = new Mat();
Imgproc.cvtColor(imgBGR, imgRGB, Imgproc.COLOR_BGR2RGB); Imgproc.cvtColor(imgBGR, imgRGB, Imgproc.COLOR_BGR2RGB);
assertTrue(imgRGB.channels() == 3); assertTrue(!imgRGB.empty() && imgRGB.channels() == 3);
bmp16.eraseColor(Color.BLACK); m16.setTo(s0); bmp16.eraseColor(Color.BLACK); m16.setTo(s0);
Utils.matToBitmap(imgRGB, bmp16); Utils.bitmapToMat(bmp16, m16); Utils.matToBitmap(imgRGB, bmp16); Utils.bitmapToMat(bmp16, m16);
...@@ -107,7 +107,7 @@ public class UtilsTest extends OpenCVTestCase { ...@@ -107,7 +107,7 @@ public class UtilsTest extends OpenCVTestCase {
// Gray // Gray
Mat imgGray = new Mat(); Mat imgGray = new Mat();
Imgproc.cvtColor(imgBGR, imgGray, Imgproc.COLOR_BGR2GRAY); Imgproc.cvtColor(imgBGR, imgGray, Imgproc.COLOR_BGR2GRAY);
assertTrue(imgGray.channels() == 1); assertTrue(!imgGray.empty() && imgGray.channels() == 1);
Mat tmp = new Mat(); Mat tmp = new Mat();
bmp16.eraseColor(Color.BLACK); m16.setTo(s0); bmp16.eraseColor(Color.BLACK); m16.setTo(s0);
......
package org.opencv.test.features2d; package org.opencv.test.features2d;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.opencv.core.Core; import org.opencv.core.Core;
import org.opencv.core.CvType; import org.opencv.core.CvType;
import org.opencv.core.Mat; import org.opencv.core.Mat;
...@@ -13,10 +17,6 @@ import org.opencv.features2d.KeyPoint; ...@@ -13,10 +17,6 @@ import org.opencv.features2d.KeyPoint;
import org.opencv.test.OpenCVTestCase; import org.opencv.test.OpenCVTestCase;
import org.opencv.test.OpenCVTestRunner; import org.opencv.test.OpenCVTestRunner;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class BruteForceDescriptorMatcherTest extends OpenCVTestCase { public class BruteForceDescriptorMatcherTest extends OpenCVTestCase {
DescriptorMatcher matcher; DescriptorMatcher matcher;
...@@ -163,7 +163,25 @@ public class BruteForceDescriptorMatcherTest extends OpenCVTestCase { ...@@ -163,7 +163,25 @@ public class BruteForceDescriptorMatcherTest extends OpenCVTestCase {
} }
public void testKnnMatchMatMatListOfListOfDMatchInt() { public void testKnnMatchMatMatListOfListOfDMatchInt() {
fail("Not yet implemented"); final int k = 3;
Mat train = getTrainDescriptors();
Mat query = getQueryDescriptors();
List<List<DMatch>> matches = new ArrayList<List<DMatch>>();
matcher.knnMatch(query, train, matches, k);
/*
matcher.add(Arrays.asList(train));
matcher.knnMatch(query, matches, k);
*/
assertEquals(query.rows(), matches.size());
for(int i = 0; i<matches.size(); i++)
{
List<DMatch> ldm = matches.get(i);
assertEquals(Math.min(k, train.rows()), ldm.size());
for(DMatch dm : ldm)
{
assertEquals(dm.queryIdx, i);
}
}
} }
public void testKnnMatchMatMatListOfListOfDMatchIntMat() { public void testKnnMatchMatMatListOfListOfDMatchIntMat() {
......
...@@ -2102,6 +2102,24 @@ public class ImgprocTest extends OpenCVTestCase { ...@@ -2102,6 +2102,24 @@ public class ImgprocTest extends OpenCVTestCase {
assertMatEqual(truth, dst, EPS); assertMatEqual(truth, dst, EPS);
} }
//undistortPoints(List<Point> src, List<Point> dst, Mat cameraMatrix, Mat distCoeffs)
public void testUndistortPointsListOfPointListOfPointMatMat() {
List<Point> src = new ArrayList<Point>(3);
src.add( new Point(1, 2) );
src.add( new Point(3, 4) );
src.add( new Point(-1, -1) );
List<Point> dst = new ArrayList<Point>();
Mat cameraMatrix = Mat.eye(3, 3, CvType.CV_64FC1);
Mat distCoeffs = new Mat(8, 1, CvType.CV_64FC1, new Scalar(0));
Imgproc.undistortPoints(src, dst, cameraMatrix, distCoeffs);
assertEquals(src.size(), dst.size());
for(int i=0; i<src.size(); i++) {
//Log.d("UndistortPoints", "s="+src.get(i)+", d="+dst.get(i));
assertTrue(src.get(i).equals(dst.get(i)));
}
}
public void testWarpAffineMatMatMatSize() { public void testWarpAffineMatMatMatSize() {
Mat src = new Mat(3, 3, CvType.CV_32F) { Mat src = new Mat(3, 3, CvType.CV_32F) {
{ {
......
...@@ -514,7 +514,7 @@ func_arg_fix = { ...@@ -514,7 +514,7 @@ func_arg_fix = {
'getAffineTransform' : { 'src' : 'vector_Point2f', 'dst' : 'vector_Point2f', }, 'getAffineTransform' : { 'src' : 'vector_Point2f', 'dst' : 'vector_Point2f', },
'hconcat' : { 'src' : 'vector_Mat', }, 'hconcat' : { 'src' : 'vector_Mat', },
'vconcat' : { 'src' : 'vector_Mat', }, 'vconcat' : { 'src' : 'vector_Mat', },
'undistortPoints' : { 'src' : 'vector_Point2d', 'dst' : 'vector_Point2d' }
}, # '', i.e. no class }, # '', i.e. no class
} # func_arg_fix } # func_arg_fix
......
...@@ -643,4 +643,9 @@ public class Converters { ...@@ -643,4 +643,9 @@ public class Converters {
} }
} }
static {
System.loadLibrary("opencv_java");
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment