From bd7bf39b4b28cd7ca364c8de935ce442ef423e9e Mon Sep 17 00:00:00 2001 From: berak <px1704@web.de> Date: Fri, 24 Aug 2018 13:46:38 +0200 Subject: [PATCH] java: change MatOfRotatedRect to CV_32FC5 --- .../java/src/java/core+MatOfRotatedRect.java | 20 +++++++++---------- .../core/misc/java/test/RotatedRectTest.java | 14 ++++++------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/modules/core/misc/java/src/java/core+MatOfRotatedRect.java b/modules/core/misc/java/src/java/core+MatOfRotatedRect.java index dc8ba1470e..6f36e6ca6c 100644 --- a/modules/core/misc/java/src/java/core+MatOfRotatedRect.java +++ b/modules/core/misc/java/src/java/core+MatOfRotatedRect.java @@ -8,8 +8,8 @@ import org.opencv.core.RotatedRect; public class MatOfRotatedRect extends Mat { - // 64FC5 - private static final int _depth = CvType.CV_64F; + // 32FC5 + private static final int _depth = CvType.CV_32F; private static final int _channels = 5; public MatOfRotatedRect() { @@ -49,14 +49,14 @@ public class MatOfRotatedRect extends Mat { return; int num = a.length; alloc(num); - double buff[] = new double[num * _channels]; + float buff[] = new float[num * _channels]; for(int i=0; i<num; i++) { RotatedRect r = a[i]; - buff[_channels*i+0] = (double) r.center.x; - buff[_channels*i+1] = (double) r.center.y; - buff[_channels*i+2] = (double) r.size.width; - buff[_channels*i+3] = (double) r.size.height; - buff[_channels*i+4] = (double) r.angle; + buff[_channels*i+0] = (float) r.center.x; + buff[_channels*i+1] = (float) r.center.y; + buff[_channels*i+2] = (float) r.size.width; + buff[_channels*i+3] = (float) r.size.height; + buff[_channels*i+4] = (float) r.angle; } put(0, 0, buff); //TODO: check ret val! } @@ -66,10 +66,10 @@ public class MatOfRotatedRect extends Mat { RotatedRect[] a = new RotatedRect[num]; if(num == 0) return a; - double buff[] = new double[_channels]; + float buff[] = new float[_channels]; for(int i=0; i<num; i++) { get(i, 0, buff); //TODO: check ret val! - a[i] = new RotatedRect(buff); + a[i] = new RotatedRect(new Point(buff[0],buff[1]),new Size(buff[2],buff[3]),buff[4]); } return a; } diff --git a/modules/core/misc/java/test/RotatedRectTest.java b/modules/core/misc/java/test/RotatedRectTest.java index 330caf481d..b1b4a677d3 100644 --- a/modules/core/misc/java/test/RotatedRectTest.java +++ b/modules/core/misc/java/test/RotatedRectTest.java @@ -199,15 +199,15 @@ public class RotatedRectTest extends OpenCVTestCase { MatOfRotatedRect m = new MatOfRotatedRect(a,b,a,b,a,b,a,b); assertEquals(m.rows(), 8); assertEquals(m.cols(), 1); - assertEquals(m.type(), CvType.CV_64FC(5)); + assertEquals(m.type(), CvType.CV_32FC(5)); RotatedRect[] arr = m.toArray(); - assertTrue(arr[2].angle == 5.678); - assertTrue(arr[3].center.x == 9); - assertTrue(arr[3].size.width == 7); + assertEquals(arr[2].angle, a.angle, EPS); + assertEquals(arr[3].center.x, b.center.x); + assertEquals(arr[3].size.width, b.size.width); List<RotatedRect> li = m.toList(); - assertTrue(li.size() == 8); + assertEquals(li.size(), 8); RotatedRect rr = li.get(7); - assertTrue(rr.angle == 5.432); - assertTrue(rr.center.y == 8); + assertEquals(rr.angle, b.angle, EPS); + assertEquals(rr.center.y, b.center.y); } }