1793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerpackage org.opencv.test.core; 2793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 3793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerimport java.util.ArrayList; 4793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerimport java.util.Arrays; 5793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerimport java.util.List; 6793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 7793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerimport org.opencv.core.Core; 8793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerimport org.opencv.core.Core.MinMaxLocResult; 9793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerimport org.opencv.core.CvException; 10793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerimport org.opencv.core.CvType; 11793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerimport org.opencv.core.Mat; 12793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerimport org.opencv.core.MatOfDouble; 13793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerimport org.opencv.core.MatOfInt; 14793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerimport org.opencv.core.MatOfPoint; 15793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerimport org.opencv.core.Point; 16793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerimport org.opencv.core.Rect; 17793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerimport org.opencv.core.RotatedRect; 18793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerimport org.opencv.core.Scalar; 19793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerimport org.opencv.core.Size; 20793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerimport org.opencv.core.TermCriteria; 21793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerimport org.opencv.test.OpenCVTestCase; 22793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerimport org.opencv.imgproc.Imgproc; 23793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 24793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerpublic class CoreTest extends OpenCVTestCase { 25793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 26793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testAbsdiff() { 27793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.absdiff(gray128, gray255, dst); 28793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 29793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray127, dst); 30793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 31793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 32793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testAddMatMatMat() { 33793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.add(gray128, gray128, dst); 34793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 35793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray255, dst); 36793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 37793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 38793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testAddMatMatMatMatInt() { 39793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.add(gray0, gray1, dst, gray1, CvType.CV_32F); 40793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 41793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(CvType.CV_32F, dst.depth()); 42793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray1_32f, dst, EPS); 43793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 44793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 45793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testAddWeightedMatDoubleMatDoubleDoubleMat() { 46793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.addWeighted(gray1, 120.0, gray127, 1.0, 10.0, dst); 47793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 48793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray255, dst); 49793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 50793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 51793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testAddWeightedMatDoubleMatDoubleDoubleMatInt() { 52793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.addWeighted(gray1, 126.0, gray127, 1.0, 2.0, dst, CvType.CV_32F); 53793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 54793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(CvType.CV_32F, dst.depth()); 55793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray255_32f, dst, EPS); 56793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 57793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 58793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testBitwise_andMatMatMat() { 59793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.bitwise_and(gray127, gray3, dst); 60793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 61793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray3, dst); 62793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 63793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 64793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testBitwise_andMatMatMatMat() { 65793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.bitwise_and(gray3, gray1, dst, gray255); 66793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 67793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray1, dst); 68793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 69793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 70793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testBitwise_notMatMat() { 71793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.bitwise_not(gray255, dst); 72793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 73793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray0, dst); 74793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 75793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 76793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testBitwise_notMatMatMat() { 77793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.bitwise_not(gray0, dst, gray1); 78793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 79793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray255, dst); 80793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 81793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 82793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testBitwise_orMatMatMat() { 83793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.bitwise_or(gray1, gray2, dst); 84793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 85793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray3, dst); 86793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 87793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 88793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testBitwise_orMatMatMatMat() { 89793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.bitwise_or(gray127, gray3, dst, gray255); 90793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 91793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray127, dst); 92793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 93793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 94793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testBitwise_xorMatMatMat() { 95793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.bitwise_xor(gray3, gray2, dst); 96793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 97793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray1, dst); 98793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 99793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 100793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testBitwise_xorMatMatMatMat() { 101793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.bitwise_or(gray127, gray128, dst, gray255); 102793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 103793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray255, dst); 104793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 105793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 106793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testCalcCovarMatrixMatMatMatInt() { 107793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat covar = new Mat(matSize, matSize, CvType.CV_64FC1); 108793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat mean = new Mat(1, matSize, CvType.CV_64FC1); 109793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 110793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.calcCovarMatrix(gray0_32f, covar, mean, Core.COVAR_ROWS | Core.COVAR_NORMAL); 111793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 112793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray0_64f, covar, EPS); 113793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray0_64f_1d, mean, EPS); 114793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 115793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 116793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testCalcCovarMatrixMatMatMatIntInt() { 117793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat covar = new Mat(matSize, matSize, CvType.CV_32F); 118793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat mean = new Mat(1, matSize, CvType.CV_32F); 119793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 120793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.calcCovarMatrix(gray0_32f, covar, mean, Core.COVAR_ROWS | Core.COVAR_NORMAL, CvType.CV_32F); 121793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 122793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray0_32f, covar, EPS); 123793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray0_32f_1d, mean, EPS); 124793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 125793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 126793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testCartToPolarMatMatMatMat() { 127793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat x = new Mat(1, 3, CvType.CV_32F) { 128793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 129793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 3.0, 6.0, 5, 0); 130793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 131793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 132793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat y = new Mat(1, 3, CvType.CV_32F) { 133793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 134793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 4.0, 8.0, 12.0); 135793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 136793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 137793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat dst_angle = new Mat(); 138793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 139793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.cartToPolar(x, y, dst, dst_angle); 140793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 141793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat expected_magnitude = new Mat(1, 3, CvType.CV_32F) { 142793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 143793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 5.0, 10.0, 13.0); 144793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 145793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 146793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat expected_angle = new Mat(1, 3, CvType.CV_32F) { 147793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 148793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, atan2rad(4,3), atan2rad(8,6), atan2rad(12,5)); 149793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 150793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 151793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(expected_magnitude, dst, EPS); 152793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(expected_angle, dst_angle, EPS); 153793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 154793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 155793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testCartToPolarMatMatMatMatBoolean() { 156793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat x = new Mat(1, 3, CvType.CV_32F) { 157793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 158793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 3.0, 6.0, 5, 0); 159793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 160793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 161793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat y = new Mat(1, 3, CvType.CV_32F) { 162793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 163793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 4.0, 8.0, 12.0); 164793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 165793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 166793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat dst_angle = new Mat(); 167793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 168793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.cartToPolar(x, y, dst, dst_angle, true); 169793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 170793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat expected_magnitude = new Mat(1, 3, CvType.CV_32F) { 171793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 172793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 5.0, 10.0, 13.0); 173793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 174793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 175793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat expected_angle = new Mat(1, 3, CvType.CV_32F) { 176793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 177793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, atan2deg(4,3), atan2deg(8,6), atan2deg(12,5)); 178793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 179793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 180793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(expected_magnitude, dst, EPS); 181793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(expected_angle, dst_angle, EPS * 180/Math.PI); 182793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 183793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 184793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 185793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testCheckRangeMat() { 186793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat outOfRange = new Mat(2, 2, CvType.CV_64F); 187793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler outOfRange.put(0, 0, Double.NaN, Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY, 0); 188793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 189793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertTrue(Core.checkRange(grayRnd_32f)); 190793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertTrue(Core.checkRange(new Mat())); 191793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertFalse(Core.checkRange(outOfRange)); 192793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 193793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 194793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 195793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testCheckRangeMatBooleanPointDoubleDouble() { 196793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat inRange = new Mat(2, 3, CvType.CV_64F) { 197793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 198793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 14, 48, 76, 33, 5, 99); 199793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 200793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 201793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 202793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertTrue(Core.checkRange(inRange, true, 5, 100)); 203793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 204793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat outOfRange = new Mat(2, 3, CvType.CV_64F) { 205793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 206793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, -4, 0, 6, 33, 4, 109); 207793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 208793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 209793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 210793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertFalse(Core.checkRange(outOfRange, true, 5, 100)); 211793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 212793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 213793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testCompare() { 214793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.compare(gray0, gray0, dst, Core.CMP_EQ); 215793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 216793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(dst, gray255); 217793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 218793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.compare(gray0, gray1, dst, Core.CMP_EQ); 219793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 220793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(dst, gray0); 221793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 222793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler grayRnd.put(0, 0, 0, 0); 223793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 224793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.compare(gray0, grayRnd, dst, Core.CMP_GE); 225793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 226793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler int expected = (int) (grayRnd.total() - Core.countNonZero(grayRnd)); 227793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(expected, Core.countNonZero(dst)); 228793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 229793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 230793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testCompleteSymmMat() { 231793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.completeSymm(grayRnd_32f); 232793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 233793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(grayRnd_32f, grayRnd_32f.t(), EPS); 234793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 235793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 236793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testCompleteSymmMatBoolean() { 237793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat grayRnd_32f2 = grayRnd_32f.clone(); 238793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 239793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.completeSymm(grayRnd_32f, true); 240793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 241793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(grayRnd_32f, grayRnd_32f.t(), EPS); 242793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.completeSymm(grayRnd_32f2, false); 243793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatNotEqual(grayRnd_32f2, grayRnd_32f, EPS); 244793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 245793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 246793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testConvertScaleAbsMatMat() { 247793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.convertScaleAbs(gray0, dst); 248793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 249793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray0, dst, EPS); 250793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 251793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.convertScaleAbs(gray_16u_256, dst); 252793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 253793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray255, dst, EPS); 254793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 255793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 256793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testConvertScaleAbsMatMatDoubleDouble() { 257793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.convertScaleAbs(gray_16u_256, dst, 2, -513); 258793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 259793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray1, dst); 260793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 261793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 262793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testCountNonZero() { 263793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(0, Core.countNonZero(gray0)); 264793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 265793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler gray0.put(0, 0, 255); 266793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler gray0.put(gray0.rows() - 1, gray0.cols() - 1, 255); 267793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 268793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(2, Core.countNonZero(gray0)); 269793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 270793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 271793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testCubeRoot() { 272793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler float res = Core.cubeRoot(-27.0f); 273793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 274793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(-3.0f, res); 275793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 276793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 277793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testDctMatMat() { 278793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat in = new Mat(1, 4, CvType.CV_32F) { 279793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 280793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 135.22211, 50.811096, 102.27016, 207.6682); 281793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 282793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 283793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat dst1 = new Mat(); 284793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat dst2 = new Mat(); 285793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 286793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.dct(gray0_32f_1d, dst1); 287793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.dct(in, dst2); 288793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 289793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler truth = new Mat(1, 4, CvType.CV_32F) { 290793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 291793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 247.98576, -61.252407, 94.904533, 14.013477); 292793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 293793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 294793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray0_32f_1d, dst1, EPS); 295793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(truth, dst2, EPS); 296793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 297793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 298793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testDctMatMatInt() { 299793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat in = new Mat(1, 4, CvType.CV_32F) { 300793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 301793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 247.98576, -61.252407, 94.904533, 14.013477); 302793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 303793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 304793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat dst1 = new Mat(); 305793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat dst2 = new Mat(); 306793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 307793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.dct(gray0_32f_1d, dst1, Core.DCT_INVERSE); 308793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.dct(in, dst2, Core.DCT_INVERSE); 309793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 310793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler truth = new Mat(1, 4, CvType.CV_32F) { 311793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 312793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 135.22211, 50.811096, 102.27016, 207.6682); 313793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 314793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 315793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray0_32f_1d, dst1, EPS); 316793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(truth, dst2, EPS); 317793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 318793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 319793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testDeterminant() { 320793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat mat = new Mat(2, 2, CvType.CV_32F) { 321793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 322793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 4.0); 323793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 1, 2.0); 324793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 0, 4.0); 325793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 1, 4.0); 326793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 327793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 328793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 329793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler double det = Core.determinant(mat); 330793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 331793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(8.0, det); 332793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 333793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 334793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testDftMatMat() { 335793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.dft(gray0_32f_1d, dst); 336793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 337793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray0_32f_1d, dst, EPS); 338793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 339793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 340793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testDftMatMatIntInt() { 341793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat src1 = new Mat(2, 4, CvType.CV_32F) { 342793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 343793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1, 2, 3, 4); 344793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 0, 1, 1, 1, 1); 345793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 346793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 347793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat src2 = new Mat(2, 4, CvType.CV_32F) { 348793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 349793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1, 2, 3, 4); 350793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 0, 0, 0, 0, 0); 351793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 352793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 353793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat dst1 = new Mat(); 354793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat dst2 = new Mat(); 355793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 356793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.dft(src1, dst1, Core.DFT_REAL_OUTPUT, 1); 357793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.dft(src2, dst2, Core.DFT_REAL_OUTPUT, 0); 358793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 359793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(dst2, dst1, EPS); 360793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 361793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 362793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testDivideDoubleMatMat() { 363793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.divide(4.0, gray2, dst); 364793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 365793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray2, dst); 366793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 367793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.divide(4.0, gray0, dst); 368793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 369793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray0, dst); 370793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 371793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 372793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testDivideDoubleMatMatInt() { 373793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.divide(9.0, gray3, dst, CvType.CV_32F); 374793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 375793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray3_32f, dst, EPS); 376793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 377793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 378793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testDivideMatMatMat() { 379793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.divide(gray9, gray3, dst); 380793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 381793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray3, dst); 382793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 383793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 384793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testDivideMatMatMatDouble() { 385793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.divide(gray1, gray2, dst, 6.0); 386793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 387793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray3, dst); 388793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 389793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 390793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testDivideMatMatMatDoubleInt() { 391793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.divide(gray1, gray2, dst, 6.0, CvType.CV_32F); 392793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 393793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray3_32f, dst, EPS); 394793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 395793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 396793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testEigen() { 397793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat src = new Mat(3, 3, CvType.CV_32FC1, new Scalar(2.0)); 398793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat eigenVals = new Mat(); 399793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat eigenVecs = new Mat(); 400793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 401793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.eigen(src, eigenVals, eigenVecs); 402793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 403793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat expectedEigenVals = new Mat(3, 1, CvType.CV_32FC1) { 404793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 405793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 6, 0, 0); 406793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 407793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 408793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat expectedEigenVecs = new Mat(3, 3, CvType.CV_32FC1) { 409793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 410793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 0.57735026, 0.57735026, 0.57735032); 411793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 0, 0.70710677, -0.70710677, 0); 412793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(2, 0, -0.40824831, -0.40824831, 0.81649661); 413793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 414793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 415793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(eigenVals, expectedEigenVals, EPS); 416793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(eigenVecs, expectedEigenVecs, EPS); 417793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 418793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 419793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testExp() { 420793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.exp(gray0_32f, dst); 421793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 422793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray1_32f, dst, EPS); 423793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 424793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 425793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testExtractChannel() { 426793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.extractChannel(rgba128, dst, 0); 427793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 428793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray128, dst); 429793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 430793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 431793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testFastAtan2() { 432793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler double eps = 0.3; 433793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 434793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler float res = Core.fastAtan2(50, 50); 435793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 436793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(45, res, eps); 437793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 438793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler float res2 = Core.fastAtan2(80, 20); 439793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 440793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(Math.atan2(80, 20) * 180 / Math.PI, res2, eps); 441793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 442793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 443793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testFillConvexPolyMatListOfPointScalar() { 444793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler MatOfPoint polyline = new MatOfPoint(new Point[]{new Point(1, 1), new Point(5, 0), new Point(6, 8), new Point(0, 9)}); 445793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 446793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Imgproc.fillConvexPoly(gray0, polyline, new Scalar(150)); 447793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 448793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertTrue(0 < Core.countNonZero(gray0)); 449793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertTrue(gray0.total() > Core.countNonZero(gray0)); 450793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 451793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 452793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testFillConvexPolyMatListOfPointScalarIntInt() { 453793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler MatOfPoint polyline1 = new MatOfPoint(new Point(2, 1), new Point(5, 1), new Point(5, 7), new Point(2, 7)); 454793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler MatOfPoint polyline2 = new MatOfPoint(new Point(4, 2), new Point(10, 2), new Point(10, 14), new Point(4, 14)); 455793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 456793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler // current implementation of fixed-point version of fillConvexPoly 457793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler // requires image to be at least 2-pixel wider in each direction than 458793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler // contour 459793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Imgproc.fillConvexPoly(gray0, polyline1, colorWhite, Imgproc.LINE_8, 0); 460793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 461793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertTrue(0 < Core.countNonZero(gray0)); 462793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertTrue(gray0.total() > Core.countNonZero(gray0)); 463793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 464793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Imgproc.fillConvexPoly(gray0, polyline2, colorBlack, Imgproc.LINE_8, 1); 465793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 466793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals("see http://code.opencv.org/issues/1284", 0, Core.countNonZero(gray0)); 467793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 468793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 469793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testFillPolyMatListOfListOfPointScalar() { 470793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler int matSize = 10; 471793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat gray0 = Mat.zeros(matSize, matSize, CvType.CV_8U); 472793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler MatOfPoint polyline = new MatOfPoint(new Point(1, 4), new Point(1, 8), new Point(4, 1), new Point(7, 8), new Point(7, 4)); 473793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler List<MatOfPoint> polylines = new ArrayList<MatOfPoint>(); 474793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler polylines.add(polyline); 475793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 476793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Imgproc.fillPoly(gray0, polylines, new Scalar(1)); 477793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 478793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler final byte[] truth = new byte[] { 479793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 480793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 481793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 482793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 483793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 484793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 485793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 486793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 487793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 488793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; 489793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 490793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(new Mat(gray0.size(), CvType.CV_8U) { 491793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 492793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, truth); 493793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 494793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }, gray0); 495793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 496793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 497793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testFillPolyMatListOfListOfPointScalarIntIntPoint() { 498793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler MatOfPoint polyline1 = new MatOfPoint(new Point(1, 4), new Point(1, 8), new Point(4, 1), new Point(7, 8), new Point(7, 4)); 499793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler MatOfPoint polyline2 = new MatOfPoint(new Point(0, 3), new Point(0, 7), new Point(3, 0), new Point(6, 7), new Point(6, 3)); 500793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 501793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler List<MatOfPoint> polylines1 = new ArrayList<MatOfPoint>(); 502793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler polylines1.add(polyline1); 503793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 504793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler List<MatOfPoint> polylines2 = new ArrayList<MatOfPoint>(); 505793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler polylines2.add(polyline2); 506793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 507793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Imgproc.fillPoly(gray0, polylines1, new Scalar(1), Imgproc.LINE_8, 0, new Point(0, 0)); 508793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 509793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertTrue(0 < Core.countNonZero(gray0)); 510793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 511793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Imgproc.fillPoly(gray0, polylines2, new Scalar(0), Imgproc.LINE_8, 0, new Point(1, 1)); 512793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 513793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(0, Core.countNonZero(gray0)); 514793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 515793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 516793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testFlip() { 517793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat src = new Mat(2, 2, CvType.CV_32F) { 518793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 519793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1.0); 520793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 1, 2.0); 521793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 0, 3.0); 522793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 1, 4.0); 523793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 524793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 525793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat dst1 = new Mat(); 526793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat dst2 = new Mat(); 527793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 528793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.flip(src, dst1, 0); 529793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.flip(src, dst2, 1); 530793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 531793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat dst_f1 = new Mat(2, 2, CvType.CV_32F) { 532793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 533793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 3.0); 534793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 1, 4.0); 535793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 0, 1.0); 536793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 1, 2.0); 537793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 538793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 539793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat dst_f2 = new Mat(2, 2, CvType.CV_32F) { 540793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 541793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 2.0); 542793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 1, 1.0); 543793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 0, 4.0); 544793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 1, 3.0); 545793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 546793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 547793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(dst_f1, dst1, EPS); 548793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(dst_f2, dst2, EPS); 549793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 550793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 551793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testGemmMatMatDoubleMatDoubleMat() { 552793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat m1 = new Mat(2, 2, CvType.CV_32FC1) { 553793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 554793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1.0, 0.0); 555793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 0, 1.0, 0.0); 556793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 557793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 558793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat m2 = new Mat(2, 2, CvType.CV_32FC1) { 559793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 560793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1.0, 0.0); 561793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 0, 1.0, 0.0); 562793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 563793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 564793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat dmatrix = new Mat(2, 2, CvType.CV_32FC1) { 565793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 566793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 0.001, 0.001); 567793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 0, 0.001, 0.001); 568793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 569793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 570793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 571793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.gemm(m1, m2, 1.0, dmatrix, 1.0, dst); 572793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 573793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat expected = new Mat(2, 2, CvType.CV_32FC1) { 574793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 575793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1.001, 0.001); 576793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 0, 1.001, 0.001); 577793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 578793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 579793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(expected, dst, EPS); 580793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 581793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 582793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testGemmMatMatDoubleMatDoubleMatInt() { 583793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat m1 = new Mat(2, 2, CvType.CV_32FC1) { 584793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 585793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1.0, 0.0); 586793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 0, 1.0, 0.0); 587793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 588793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 589793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat m2 = new Mat(2, 2, CvType.CV_32FC1) { 590793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 591793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1.0, 0.0); 592793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 0, 1.0, 0.0); 593793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 594793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 595793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat dmatrix = new Mat(2, 2, CvType.CV_32FC1) { 596793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 597793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 0.001, 0.001); 598793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 0, 0.001, 0.001); 599793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 600793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 601793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 602793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.gemm(m1, m2, 1.0, dmatrix, 1.0, dst, Core.GEMM_1_T); 603793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 604793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat expected = new Mat(2, 2, CvType.CV_32FC1) { 605793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 606793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 2.001, 0.001); 607793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 0, 0.001, 0.001); 608793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 609793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 610793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(expected, dst, EPS); 611793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 612793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 613793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testGetCPUTickCount() { 614793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler long cpuCountStart = 0, actualTickCount; 615793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 616793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler cpuCountStart = Core.getCPUTickCount(); 617793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.sumElems(gray255); 618793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler actualTickCount = Core.getCPUTickCount(); 619793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 620793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler long expectedTickCount = actualTickCount - cpuCountStart; 621793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertTrue(expectedTickCount > 0); 622793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 623793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 624793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testGetNumberOfCPUs() { 625793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler int cpus = Core.getNumberOfCPUs(); 626793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 627793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertTrue(Runtime.getRuntime().availableProcessors() <= cpus); 628793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 629793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 630793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testGetOptimalDFTSize() { 631793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(1, Core.getOptimalDFTSize(0)); 632793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(135, Core.getOptimalDFTSize(133)); 633793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(15, Core.getOptimalDFTSize(13)); 634793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 635793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 636793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testGetTickCount() { 637793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler long startCount, endCount, count; 638793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 639793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler startCount = Core.getTickCount(); 640793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.divide(gray2, gray1, dst); 641793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler endCount = Core.getTickCount(); 642793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 643793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler count = endCount - startCount; 644793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertTrue(count > 0); 645793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 646793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 647793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testGetTickFrequency() { 648793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler double freq1 = Core.getTickFrequency(); 649793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.divide(gray2, gray1, dst); 650793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler double freq2 = Core.getTickFrequency(); 651793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 652793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertTrue(0 < freq1); 653793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(freq1, freq2); 654793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 655793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 656793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testHconcat() { 657793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler List<Mat> mats = Arrays.asList(Mat.eye(3, 3, CvType.CV_8U), Mat.zeros(3, 2, CvType.CV_8U)); 658793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 659793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.hconcat(mats, dst); 660793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 661793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(Mat.eye(3, 5, CvType.CV_8U), dst); 662793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 663793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 664793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testIdctMatMat() { 665793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat in = new Mat(1, 8, CvType.CV_32F) { 666793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 667793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1.0, 2.0, 1.0, 0.0, 1.0, 2.0, 3.0, 1.0); 668793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 669793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 670793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 671793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.idct(in, dst); 672793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 673793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler truth = new Mat(1, 8, CvType.CV_32F) { 674793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 675793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 3.3769724, -1.6215782, 2.3608727, 0.20730907, -0.86502546, 0.028082132, -0.7673766, 0.10917115); 676793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 677793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 678793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(truth, dst, EPS); 679793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 680793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 681793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testIdctMatMatInt() { 682793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat in = new Mat(2, 8, CvType.CV_32F) { 683793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 684793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1.0, 2.0, 1.0, 0.0, 1.0, 2.0, 3.0, 1.0); 685793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 0, 1.0, 2.0, 1.0, 0.0, 1.0, 2.0, 3.0, 1.0); 686793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 687793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 688793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 689793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.idct(in, dst, Core.DCT_ROWS); 690793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 691793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler truth = new Mat(2, 8, CvType.CV_32F) { 692793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 693793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 3.3769724, -1.6215782, 2.3608727, 0.20730907, -0.86502546, 0.028082132, -0.7673766, 0.10917115); 694793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 0, 3.3769724, -1.6215782, 2.3608727, 0.20730907, -0.86502546, 0.028082132, -0.7673766, 0.10917115); 695793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 696793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 697793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(truth, dst, EPS); 698793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 699793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 700793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testIdftMatMat() { 701793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat in = new Mat(1, 4, CvType.CV_32F) { 702793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 703793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1.0, 2.0, 3.0, 4.0); 704793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 705793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 706793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 707793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.idft(in, dst); 708793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 709793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler truth = new Mat(1, 4, CvType.CV_32F) { 710793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 711793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 9, -9, 1, 3); 712793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 713793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 714793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(truth, dst, EPS); 715793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 716793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 717793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testIdftMatMatIntInt() { 718793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat in = new Mat(2, 4, CvType.CV_32F) { 719793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 720793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1.0, 2.0, 3.0, 4.0); 721793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 0, 1.0, 2.0, 3.0, 4.0); 722793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 723793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 724793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat dst = new Mat(); 725793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 726793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.idft(in, dst, Core.DFT_REAL_OUTPUT, 1); 727793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 728793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler truth = new Mat(2, 4, CvType.CV_32F) { 729793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 730793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 18, -18, 2, 6); 731793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 0, 0, 0, 0, 0); 732793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 733793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 734793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(truth, dst, EPS); 735793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 736793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 737793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testInRange() { 738793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler gray0.put(1, 1, 100, 150, 200); 739793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 740793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.inRange(gray0, new Scalar(120), new Scalar(160), dst); 741793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 742793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler byte vals[] = new byte[3]; 743793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler dst.get(1, 1, vals); 744793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 745793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(0, vals[0]); 746793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(-1, vals[1]); 747793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(0, vals[2]); 748793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(1, Core.countNonZero(dst)); 749793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 750793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 751793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testInsertChannel() { 752793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.insertChannel(gray0, rgba128, 0); 753793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.insertChannel(gray0, rgba128, 1); 754793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.insertChannel(gray0, rgba128, 2); 755793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.insertChannel(gray0, rgba128, 3); 756793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 757793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(rgba0, rgba128); 758793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 759793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 760793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testInvertMatMat() { 761793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat src = new Mat(2, 2, CvType.CV_32F) { 762793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 763793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1.0); 764793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 1, 2.0); 765793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 0, 1.5); 766793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 1, 4.0); 767793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 768793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 769793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 770793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.invert(src, dst); 771793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 772793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler truth = new Mat(2, 2, CvType.CV_32F) { 773793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 774793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 4.0); 775793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 1, -2.0); 776793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 0, -1.5); 777793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 1, 1.0); 778793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 779793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 780793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(truth, dst, EPS); 781793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 782793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 783793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testInvertMatMatInt() { 784793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat src = Mat.eye(3, 3, CvType.CV_32FC1); 785793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler src.put(0, 2, 1); 786793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 787793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler double cond = Core.invert(src, dst, Core.DECOMP_SVD); 788793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 789793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler truth = Mat.eye(3, 3, CvType.CV_32FC1); 790793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler truth.put(0, 2, -1); 791793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(truth, dst, EPS); 792793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(0.3819660544395447, cond, EPS); 793793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 794793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 795793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testKmeansMatIntMatTermCriteriaIntInt() { 796793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat data = new Mat(4, 5, CvType.CV_32FC1) { 797793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 798793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1, 2, 3, 4, 5); 799793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 0, 2, 3, 4, 5, 6); 800793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(2, 0, 5, 4, 3, 2, 1); 801793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(3, 0, 6, 5, 4, 3, 2); 802793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 803793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 804793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler TermCriteria criteria = new TermCriteria(TermCriteria.EPS, 0, EPS); 805793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat labels = new Mat(); 806793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 807793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.kmeans(data, 2, labels, criteria, 1, Core.KMEANS_PP_CENTERS); 808793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 809793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler int[] first_center = new int[1]; 810793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler labels.get(0, 0, first_center); 811793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler final int c1 = first_center[0]; 812793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat expected_labels = new Mat(4, 1, CvType.CV_32S) { 813793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 814793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, c1, c1, 1 - c1, 1 - c1); 815793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 816793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 817793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(expected_labels, labels); 818793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 819793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 820793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testKmeansMatIntMatTermCriteriaIntIntMat() { 821793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat data = new Mat(4, 5, CvType.CV_32FC1) { 822793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 823793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1, 2, 3, 4, 5); 824793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 0, 2, 3, 4, 5, 6); 825793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(2, 0, 5, 4, 3, 2, 1); 826793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(3, 0, 6, 5, 4, 3, 2); 827793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 828793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 829793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler TermCriteria criteria = new TermCriteria(TermCriteria.EPS, 0, EPS); 830793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat labels = new Mat(); 831793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat centers = new Mat(); 832793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 833793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.kmeans(data, 2, labels, criteria, 6, Core.KMEANS_RANDOM_CENTERS, centers); 834793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 835793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler int[] first_center = new int[1]; 836793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler labels.get(0, 0, first_center); 837793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler final int c1 = first_center[0]; 838793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat expected_labels = new Mat(4, 1, CvType.CV_32S) { 839793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 840793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, c1, c1, 1 - c1, 1 - c1); 841793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 842793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 843793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat expected_centers = new Mat(2, 5, CvType.CV_32FC1) { 844793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 845793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(c1, 0, 1.5, 2.5, 3.5, 4.5, 5.5); 846793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1 - c1, 0, 5.5, 4.5, 3.5, 2.5, 1.5); 847793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 848793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 849793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(expected_labels, labels); 850793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(expected_centers, centers, EPS); 851793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 852793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 853793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testLineMatPointPointScalar() { 854793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler int nPoints = Math.min(gray0.cols(), gray0.rows()); 855793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Point point1 = new Point(0, 0); 856793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Point point2 = new Point(nPoints, nPoints); 857793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Scalar color = new Scalar(255); 858793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 859793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Imgproc.line(gray0, point1, point2, color); 860793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 861793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertTrue(nPoints == Core.countNonZero(gray0)); 862793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 863793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 864793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testLineMatPointPointScalarInt() { 865793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler int nPoints = Math.min(gray0.cols(), gray0.rows()); 866793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Point point1 = new Point(0, 0); 867793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Point point2 = new Point(nPoints, nPoints); 868793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 869793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Imgproc.line(gray0, point1, point2, colorWhite, 0); 870793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 871793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertTrue(nPoints == Core.countNonZero(gray0)); 872793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 873793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 874793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testLineMatPointPointScalarIntIntInt() { 875793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler int nPoints = Math.min(gray0.cols(), gray0.rows()); 876793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Point point1 = new Point(3, 4); 877793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Point point2 = new Point(nPoints, nPoints); 878793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Point point1_4 = new Point(3 * 4, 4 * 4); 879793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Point point2_4 = new Point(nPoints * 4, nPoints * 4); 880793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 881793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Imgproc.line(gray0, point2, point1, colorWhite, 2, Imgproc.LINE_8, 0); 882793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 883793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertFalse(0 == Core.countNonZero(gray0)); 884793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 885793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Imgproc.line(gray0, point2_4, point1_4, colorBlack, 2, Imgproc.LINE_8, 2); 886793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 887793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(0, Core.countNonZero(gray0)); 888793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 889793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 890793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testLog() { 891793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat in = new Mat(1, 4, CvType.CV_32FC1) { 892793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 893793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1.0, 10.0, 100.0, 1000.0); 894793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 895793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 896793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 897793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.log(in, dst); 898793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 899793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat expected = new Mat(1, 4, CvType.CV_32FC1) { 900793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 901793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 0, 2.3025851, 4.6051702, 6.9077554); 902793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 903793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 904793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(expected, dst, EPS); 905793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 906793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 907793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testLUTMatMatMat() { 908793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat lut = new Mat(1, 256, CvType.CV_8UC1); 909793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler lut.setTo(new Scalar(0)); 910793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 911793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.LUT(grayRnd, lut, dst); 912793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 913793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray0, dst); 914793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 915793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler lut.setTo(new Scalar(255)); 916793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 917793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.LUT(grayRnd, lut, dst); 918793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 919793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray255, dst); 920793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 921793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 922793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testMagnitude() { 923793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat x = new Mat(1, 4, CvType.CV_32F); 924793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat y = new Mat(1, 4, CvType.CV_32F); 925793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler x.put(0, 0, 3.0, 5.0, 9.0, 6.0); 926793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler y.put(0, 0, 4.0, 12.0, 40.0, 8.0); 927793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 928793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.magnitude(x, y, dst); 929793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 930793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat out = new Mat(1, 4, CvType.CV_32F); 931793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler out.put(0, 0, 5.0, 13.0, 41.0, 10.0); 932793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(out, dst, EPS); 933793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 934793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.magnitude(gray0_32f, gray255_32f, dst); 935793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 936793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray255_32f, dst, EPS); 937793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 938793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 939793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testMahalanobis() { 940793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat covar = new Mat(matSize, matSize, CvType.CV_32F); 941793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat mean = new Mat(1, matSize, CvType.CV_32F); 942793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.calcCovarMatrix(grayRnd_32f, covar, mean, Core.COVAR_ROWS | Core.COVAR_NORMAL, CvType.CV_32F); 943793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler covar = covar.inv(); 944793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat line1 = grayRnd_32f.row(0); 945793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat line2 = grayRnd_32f.row(1); 946793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 947793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler double d = Core.Mahalanobis(line1, line1, covar); 948793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 949793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(0.0, d); 950793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 951793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler d = Core.Mahalanobis(line1, line2, covar); 952793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 953793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertTrue(d > 0.0); 954793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 955793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 956793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testMax() { 957793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.max(gray0, gray255, dst); 958793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 959793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray255, dst); 960793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 961793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat x = new Mat(1, 1, CvType.CV_32F); 962793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat y = new Mat(1, 1, CvType.CV_32F); 963793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler x.put(0, 0, 23.0); 964793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler y.put(0, 0, 4.0); 965793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 966793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.max(x, y, dst); 967793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 968793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat truth = new Mat(1, 1, CvType.CV_32F); 969793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler truth.put(0, 0, 23.0); 970793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(truth, dst, EPS); 971793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 972793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 973793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testMeanMat() { 974793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Scalar mean = Core.mean(makeMask(gray128)); 975793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 976793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertScalarEqual(new Scalar(64), mean, EPS); 977793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 978793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 979793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testMeanMatMat() { 980793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat mask1 = makeMask(gray1.clone()); 981793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat mask2 = makeMask(gray0, 1); 982793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 983793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Scalar mean1 = Core.mean(grayRnd, mask1); 984793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Scalar mean2 = Core.mean(grayRnd, mask2); 985793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Scalar mean = Core.mean(grayRnd, gray1); 986793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 987793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertScalarEqual(mean, new Scalar(0.5 * (mean1.val[0] + mean2.val[0])), EPS); 988793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 989793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 990793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testMeanStdDevMatMatMat() { 991793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler MatOfDouble mean = new MatOfDouble(); 992793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler MatOfDouble stddev = new MatOfDouble(); 993793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 994793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.meanStdDev(rgbLena, mean, stddev); 995793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 996793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler double expectedMean[] = new double[] 997793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler {105.3989906311035, 99.56269836425781, 179.7303047180176}; 998793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler double expectedDev[] = new double[] 999793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler {33.74205485167219, 52.8734582803278, 49.01569488056406}; 1000793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1001793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertArrayEquals(expectedMean, mean.toArray(), EPS); 1002793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertArrayEquals(expectedDev, stddev.toArray(), EPS); 1003793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1004793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1005793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testMeanStdDevMatMatMatMat() { 1006793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat submat = grayRnd.submat(0, grayRnd.rows() / 2, 0, grayRnd.cols() / 2); 1007793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler submat.setTo(new Scalar(33)); 1008793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat mask = gray0.clone(); 1009793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler submat = mask.submat(0, mask.rows() / 2, 0, mask.cols() / 2); 1010793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler submat.setTo(new Scalar(1)); 1011793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler MatOfDouble mean = new MatOfDouble(); 1012793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler MatOfDouble stddev = new MatOfDouble(); 1013793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1014793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.meanStdDev(grayRnd, mean, stddev, mask); 1015793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1016793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler double expectedMean[] = new double[] {33d}; 1017793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler double expectedDev[] = new double[] {0d}; 1018793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1019793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertArrayEquals(expectedMean, mean.toArray(), EPS); 1020793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertArrayEquals(expectedDev, stddev.toArray(), EPS); 1021793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1022793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1023793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testMerge() { 1024793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat src1 = new Mat(2, 2, CvType.CV_32FC1, new Scalar(1)); 1025793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat src2 = new Mat(2, 2, CvType.CV_32FC1, new Scalar(2)); 1026793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat src3 = new Mat(2, 2, CvType.CV_32FC1, new Scalar(3)); 1027793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler List<Mat> listMat = Arrays.asList(src1, src2, src3); 1028793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1029793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.merge(listMat, dst); 1030793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1031793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler truth = new Mat(2, 2, CvType.CV_32FC3, new Scalar(1, 2, 3)); 1032793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(truth, dst, EPS); 1033793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1034793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1035793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testMin() { 1036793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.min(gray0, gray255, dst); 1037793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1038793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray0, dst); 1039793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1040793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1041793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testMinMaxLocMat() { 1042793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler double minVal = 1; 1043793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler double maxVal = 10; 1044793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Point minLoc = new Point(gray3.cols() / 4, gray3.rows() / 2); 1045793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Point maxLoc = new Point(gray3.cols() / 2, gray3.rows() / 4); 1046793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler gray3.put((int) minLoc.y, (int) minLoc.x, minVal); 1047793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler gray3.put((int) maxLoc.y, (int) maxLoc.x, maxVal); 1048793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1049793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.MinMaxLocResult mmres = Core.minMaxLoc(gray3); 1050793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1051793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(minVal, mmres.minVal); 1052793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(maxVal, mmres.maxVal); 1053793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertPointEquals(minLoc, mmres.minLoc, EPS); 1054793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertPointEquals(maxLoc, mmres.maxLoc, EPS); 1055793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1056793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1057793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testMinMaxLocMatMat() { 1058793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat src = new Mat(4, 4, CvType.CV_8U) { 1059793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1060793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 2, 4, 27, 3); 1061793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 0, 0, 8, 7, 130); 1062793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(2, 0, 13, 4, 13, 4); 1063793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(3, 0, 6, 4, 2, 13); 1064793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1065793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1066793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat mask = new Mat(4, 4, CvType.CV_8U, new Scalar(0)); 1067793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler mask.submat(1, 3, 1, 4).setTo(new Scalar(1)); 1068793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1069793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler MinMaxLocResult res = Core.minMaxLoc(src, mask); 1070793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1071793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(4.0, res.minVal); 1072793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(130.0, res.maxVal); 1073793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertPointEquals(new Point(1, 2), res.minLoc, EPS); 1074793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertPointEquals(new Point(3, 1), res.maxLoc, EPS); 1075793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1076793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1077793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testMixChannels() { 1078793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler rgba0.setTo(new Scalar(10, 20, 30, 40)); 1079793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler List<Mat> src = Arrays.asList(rgba0); 1080793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler List<Mat> dst = Arrays.asList(gray3, gray2, gray1, gray0, getMat(CvType.CV_8UC3, 0, 0, 0)); 1081793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler MatOfInt fromTo = new MatOfInt( 1082793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 3, 0, 1083793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 3, 1, 1084793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 2, 2, 1085793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 0, 3, 1086793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 2, 4, 1087793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1, 5, 1088793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 0, 6 1089793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler ); 1090793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1091793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.mixChannels(src, dst, fromTo); 1092793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1093793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(getMat(CvType.CV_8U, 40), dst.get(0)); 1094793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(getMat(CvType.CV_8U, 40), dst.get(1)); 1095793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(getMat(CvType.CV_8U, 30), dst.get(2)); 1096793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(getMat(CvType.CV_8U, 10), dst.get(3)); 1097793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(getMat(CvType.CV_8UC3, 30, 20, 10), dst.get(4)); 1098793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1099793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1100793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testMulSpectrumsMatMatMatInt() { 1101793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat src1 = new Mat(1, 4, CvType.CV_32F) { 1102793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1103793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1.0, 2.0, 3.0, 4.0); 1104793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1105793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1106793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat src2 = new Mat(1, 4, CvType.CV_32F) { 1107793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1108793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1.0, 2.0, 3.0, 4.0); 1109793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1110793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1111793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1112793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.mulSpectrums(src1, src2, dst, Core.DFT_ROWS); 1113793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1114793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat expected = new Mat(1, 4, CvType.CV_32F) { 1115793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1116793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1, -5, 12, 16); 1117793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1118793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1119793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(expected, dst, EPS); 1120793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1121793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1122793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testMulSpectrumsMatMatMatIntBoolean() { 1123793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat src1 = new Mat(1, 4, CvType.CV_32F) { 1124793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1125793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1.0, 2.0, 3.0, 4.0); 1126793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1127793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1128793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat src2 = new Mat(1, 4, CvType.CV_32F) { 1129793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1130793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1.0, 2.0, 3.0, 4.0); 1131793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1132793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1133793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1134793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.mulSpectrums(src1, src2, dst, Core.DFT_ROWS, true); 1135793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1136793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat expected = new Mat(1, 4, CvType.CV_32F) { 1137793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1138793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1, 13, 0, 16); 1139793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1140793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1141793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(expected, dst, EPS); 1142793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1143793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1144793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testMultiplyMatMatMat() { 1145793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.multiply(gray0, gray255, dst); 1146793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1147793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray0, dst); 1148793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1149793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1150793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testMultiplyMatMatMatDouble() { 1151793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.multiply(gray1, gray1, dst, 2.0); 1152793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1153793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray2, dst); 1154793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1155793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1156793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1157793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testMultiplyMatMatMatDoubleInt() { 1158793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.multiply(gray1, gray2, dst, 1.5, CvType.CV_32F); 1159793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1160793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray3_32f, dst, EPS); 1161793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1162793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1163793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testMulTransposedMatMatBoolean() { 1164793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.mulTransposed(grayE_32f, dst, true); 1165793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1166793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(grayE_32f, dst, EPS); 1167793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1168793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1169793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testMulTransposedMatMatBooleanMatDouble() { 1170793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.mulTransposed(grayE_32f, dst, true, gray0_32f, 2); 1171793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1172793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler truth = gray0_32f; 1173793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler truth.diag().setTo(new Scalar(2)); 1174793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(truth, dst, EPS); 1175793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1176793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1177793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testMulTransposedMatMatBooleanMatDoubleInt() { 1178793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat a = getMat(CvType.CV_32F, 1); 1179793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1180793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.mulTransposed(a, dst, true, gray0_32f, 3, CvType.CV_64F); 1181793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1182793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(getMat(CvType.CV_64F, 3 * a.rows()), dst, EPS); 1183793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1184793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1185793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testNormalizeMatMat() { 1186793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat m = gray0.clone(); 1187793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler m.diag().setTo(new Scalar(2)); 1188793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1189793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.normalize(m, dst); 1190793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1191793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray0, dst); 1192793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1193793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1194793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testNormalizeMatMatDoubleDoubleInt() { 1195793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat src = new Mat(1, 4, CvType.CV_32F) { 1196793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1197793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1.0, 2.0, 3.0, 4.0); 1198793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1199793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1200793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1201793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.normalize(src, dst, 1.0, 2.0, Core.NORM_INF); 1202793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1203793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat expected = new Mat(1, 4, CvType.CV_32F) { 1204793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1205793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 0.25, 0.5, 0.75, 1); 1206793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1207793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1208793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(expected, dst, EPS); 1209793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1210793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1211793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testNormalizeMatMatDoubleDoubleIntInt() { 1212793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat src = new Mat(1, 5, CvType.CV_32F) { 1213793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1214793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 0, 1, 2, 3, 4); 1215793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1216793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1217793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1218793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.normalize(src, dst, 1, 2, Core.NORM_MINMAX, CvType.CV_64F); 1219793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1220793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat expected = new Mat(1, 5, CvType.CV_64F) { 1221793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1222793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1, 1.25, 1.5, 1.75, 2); 1223793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1224793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1225793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(expected, dst, EPS); 1226793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1227793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1228793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testNormalizeMatMatDoubleDoubleIntIntMat() { 1229793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat src = new Mat(1, 5, CvType.CV_32F) { 1230793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1231793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 0, 1, 2, 3, 4); 1232793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1233793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1234793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat mask = new Mat(1, 5, CvType.CV_8U) { 1235793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1236793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1, 0, 0, 0, 1); 1237793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1238793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1239793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler dst = src.clone(); 1240793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1241793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.normalize(src, dst, 1, 2, Core.NORM_MINMAX, CvType.CV_32F, mask); 1242793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1243793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat expected = new Mat(1, 5, CvType.CV_32F) { 1244793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1245793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1, 1, 2, 3, 2); 1246793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1247793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1248793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(expected, dst, EPS); 1249793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1250793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1251793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testNormMat() { 1252793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler double n = Core.norm(gray1); 1253793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1254793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(10., n); 1255793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1256793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1257793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testNormMatInt() { 1258793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler double n = Core.norm(gray127, Core.NORM_INF); 1259793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1260793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(127., n); 1261793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1262793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1263793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testNormMatIntMat() { 1264793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler double n = Core.norm(gray3, Core.NORM_L1, gray0); 1265793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1266793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(0.0, n); 1267793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1268793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1269793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testNormMatMat() { 1270793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler double n = Core.norm(gray0, gray1); 1271793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1272793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(10.0, n); 1273793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1274793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1275793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testNormMatMatInt() { 1276793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler double n = Core.norm(gray127, gray1, Core.NORM_INF); 1277793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1278793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(126.0, n); 1279793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1280793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1281793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testNormMatMatIntMat() { 1282793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler double n = Core.norm(gray3, gray0, Core.NORM_L1, makeMask(gray0.clone(), 1)); 1283793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1284793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(150.0, n); 1285793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1286793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1287793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testPCABackProject() { 1288793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat mean = new Mat(1, 4, CvType.CV_32F) { 1289793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1290793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 2, 4, 4, 8); 1291793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1292793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1293793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat vectors = new Mat(1, 4, CvType.CV_32F, new Scalar(0)) { 1294793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1295793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 0.2, 0.4, 0.4, 0.8); 1296793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1297793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1298793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat data = new Mat(3, 1, CvType.CV_32F) { 1299793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1300793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, -5, 0, -10); 1301793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1302793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1303793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat result = new Mat(); 1304793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1305793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.PCABackProject(data, mean, vectors, result); 1306793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1307793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat truth = new Mat(3, 4, CvType.CV_32F) { 1308793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1309793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1, 2, 2, 4); 1310793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 0, 2, 4, 4, 8); 1311793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(2, 0, 0, 0, 0, 0); 1312793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1313793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1314793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(truth, result, EPS); 1315793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1316793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1317793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testPCAComputeMatMatMat() { 1318793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat data = new Mat(3, 4, CvType.CV_32F) { 1319793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1320793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1, 2, 2, 4); 1321793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 0, 2, 4, 4, 8); 1322793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(2, 0, 3, 6, 6, 12); 1323793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1324793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1325793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat mean = new Mat(); 1326793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat vectors = new Mat(); 1327793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1328793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.PCACompute(data, mean, vectors); 1329793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1330793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat mean_truth = new Mat(1, 4, CvType.CV_32F) { 1331793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1332793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 2, 4, 4, 8); 1333793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1334793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1335793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat vectors_truth = new Mat(3, 4, CvType.CV_32F, new Scalar(0)) { 1336793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1337793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 0.2, 0.4, 0.4, 0.8); 1338793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1339793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1340793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(mean_truth, mean, EPS); 1341793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(vectors_truth, vectors, EPS); 1342793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1343793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1344793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testPCAComputeMatMatMatInt() { 1345793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat data = new Mat(3, 4, CvType.CV_32F) { 1346793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1347793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1, 2, 2, 4); 1348793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 0, 2, 4, 4, 8); 1349793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(2, 0, 3, 6, 6, 12); 1350793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1351793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1352793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat mean = new Mat(); 1353793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat vectors = new Mat(); 1354793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1355793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.PCACompute(data, mean, vectors, 1); 1356793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1357793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat mean_truth = new Mat(1, 4, CvType.CV_32F) { 1358793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1359793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 2, 4, 4, 8); 1360793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1361793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1362793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat vectors_truth = new Mat(1, 4, CvType.CV_32F, new Scalar(0)) { 1363793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1364793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 0.2, 0.4, 0.4, 0.8); 1365793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1366793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1367793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(mean_truth, mean, EPS); 1368793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(vectors_truth, vectors, EPS); 1369793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1370793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1371793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testPCAProject() { 1372793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat mean = new Mat(1, 4, CvType.CV_32F) { 1373793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1374793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 2, 4, 4, 8); 1375793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1376793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1377793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat vectors = new Mat(1, 4, CvType.CV_32F, new Scalar(0)) { 1378793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1379793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 0.2, 0.4, 0.4, 0.8); 1380793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1381793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1382793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat data = new Mat(3, 4, CvType.CV_32F) { 1383793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1384793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1, 2, 2, 4); 1385793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 0, 2, 4, 4, 8); 1386793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(2, 0, 0, 0, 0, 0); 1387793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1388793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1389793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat result = new Mat(); 1390793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1391793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.PCAProject(data, mean, vectors, result); 1392793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1393793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat truth = new Mat(3, 1, CvType.CV_32F) { 1394793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1395793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, -5, 0, -10); 1396793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1397793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1398793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(truth, result, EPS); 1399793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1400793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1401793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testPerspectiveTransform() { 1402793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat src = new Mat(matSize, matSize, CvType.CV_32FC2); 1403793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.randu(src, 0, 256); 1404793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat transformMatrix = Mat.eye(3, 3, CvType.CV_32F); 1405793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1406793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.perspectiveTransform(src, dst, transformMatrix); 1407793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(src, dst, EPS); 1408793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1409793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1410793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testPerspectiveTransform3D() { 1411793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat src = new Mat(matSize, matSize, CvType.CV_32FC3); 1412793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.randu(src, 0, 256); 1413793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat transformMatrix = Mat.eye(4, 4, CvType.CV_32F); 1414793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1415793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.perspectiveTransform(src, dst, transformMatrix); 1416793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1417793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(src, dst, EPS); 1418793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1419793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1420793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler private static double atan2deg(double y, double x) 1421793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1422793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler double res = Math.atan2(y, x); 1423793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler if (res < 0) 1424793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler res = Math.PI * 2 + res; 1425793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler return res * 180 / Math.PI; 1426793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1427793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1428793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler private static double atan2rad(double y, double x) 1429793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1430793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler double res = Math.atan2(y, x); 1431793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler if (res < 0) 1432793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler res = Math.PI * 2 + res; 1433793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler return res; 1434793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1435793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1436793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testPhaseMatMatMat() { 1437793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat x = new Mat(1, 4, CvType.CV_32F) { 1438793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1439793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 10.0, 10.0, 20.0, 5.0); 1440793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1441793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1442793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat y = new Mat(1, 4, CvType.CV_32F) { 1443793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1444793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 20.0, 15.0, 20.0, 20.0); 1445793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1446793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1447793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat gold = new Mat(1, 4, CvType.CV_32F) { 1448793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1449793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, atan2rad(20, 10), atan2rad(15, 10), atan2rad(20, 20), atan2rad(20, 5)); 1450793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1451793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1452793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1453793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.phase(x, y, dst); 1454793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1455793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gold, dst, EPS); 1456793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1457793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1458793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testPhaseMatMatMatBoolean() { 1459793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat x = new Mat(1, 4, CvType.CV_32F) { 1460793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1461793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 10.0, 10.0, 20.0, 5.0); 1462793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1463793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1464793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat y = new Mat(1, 4, CvType.CV_32F) { 1465793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1466793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 20.0, 15.0, 20.0, 20.0); 1467793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1468793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1469793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat gold = new Mat(1, 4, CvType.CV_32F) { 1470793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1471793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, atan2deg(20, 10), atan2deg(15, 10), atan2deg(20, 20), atan2deg(20, 5)); 1472793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1473793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1474793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1475793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.phase(x, y, dst, true); 1476793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1477793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gold, dst, EPS * 180 / Math.PI); 1478793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1479793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1480793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testPolarToCartMatMatMatMat() { 1481793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat magnitude = new Mat(1, 3, CvType.CV_32F) { 1482793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1483793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 5.0, 10.0, 13.0); 1484793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1485793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1486793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat angle = new Mat(1, 3, CvType.CV_32F) { 1487793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1488793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 0.92729962, 0.92729962, 1.1759995); 1489793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1490793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1491793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat xCoordinate = new Mat(); 1492793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat yCoordinate = new Mat(); 1493793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1494793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.polarToCart(magnitude, angle, xCoordinate, yCoordinate); 1495793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1496793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat x = new Mat(1, 3, CvType.CV_32F) { 1497793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1498793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 3.0, 6.0, 5, 0); 1499793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1500793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1501793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat y = new Mat(1, 3, CvType.CV_32F) { 1502793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1503793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 4.0, 8.0, 12.0); 1504793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1505793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1506793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(x, xCoordinate, EPS); 1507793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(y, yCoordinate, EPS); 1508793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1509793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1510793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testPolarToCartMatMatMatMatBoolean() { 1511793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat magnitude = new Mat(1, 3, CvType.CV_32F) { 1512793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1513793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 5.0, 10.0, 13.0); 1514793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1515793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1516793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat angle = new Mat(1, 3, CvType.CV_32F) { 1517793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1518793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 0.92729962, 0.92729962, 1.1759995); 1519793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1520793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1521793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat xCoordinate = new Mat(); 1522793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat yCoordinate = new Mat(); 1523793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1524793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.polarToCart(magnitude, angle, xCoordinate, yCoordinate, true); 1525793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1526793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat x = new Mat(1, 3, CvType.CV_32F) { 1527793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1528793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 4.9993458, 9.9986916, 12.997262); 1529793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1530793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1531793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat y = new Mat(1, 3, CvType.CV_32F) { 1532793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1533793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 0.080918625, 0.16183725, 0.26680708); 1534793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1535793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1536793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(x, xCoordinate, EPS); 1537793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(y, yCoordinate, EPS); 1538793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1539793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1540793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testPow() { 1541793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.pow(gray2, 7, dst); 1542793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1543793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray128, dst); 1544793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1545793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1546793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testRandn() { 1547793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.randn(gray0, 100, 23); 1548793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1549793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(100., Core.mean(gray0).val[0], 23 / 2); 1550793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1551793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1552793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testRandShuffleMat() { 1553793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat original = new Mat(1, 10, CvType.CV_32F) { 1554793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1555793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); 1556793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1557793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1558793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat shuffled = original.clone(); 1559793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1560793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.randShuffle(shuffled); 1561793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1562793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatNotEqual(original, shuffled, EPS); 1563793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat dst1 = new Mat(); 1564793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat dst2 = new Mat(); 1565793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.sort(original, dst1, Core.SORT_ASCENDING); 1566793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.sort(shuffled, dst2, Core.SORT_ASCENDING); 1567793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(dst1, dst2, EPS); 1568793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1569793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1570793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testRandShuffleMatDouble() { 1571793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat original = new Mat(1, 10, CvType.CV_32F) { 1572793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1573793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); 1574793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1575793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1576793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat shuffled = original.clone(); 1577793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1578793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.randShuffle(shuffled, 10); 1579793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1580793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatNotEqual(original, shuffled, EPS); 1581793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat dst1 = new Mat(); 1582793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat dst2 = new Mat(); 1583793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.sort(original, dst1, Core.SORT_ASCENDING); 1584793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.sort(shuffled, dst2, Core.SORT_ASCENDING); 1585793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(dst1, dst2, EPS); 1586793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1587793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1588793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testRandu() { 1589793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.randu(gray0, 3, 23); 1590793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler fail("Not yet implemented"); 1591793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler //assertTrue(Core.checkRange(gray0, true, null, 3, 23)); 1592793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1593793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1594793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testRectangleMatPointPointScalar() { 1595793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Point bottomRight = new Point(gray0.cols() / 2, gray0.rows() / 2); 1596793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Point topLeft = new Point(0, 0); 1597793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Scalar color = new Scalar(128); 1598793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1599793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Imgproc.rectangle(gray0, bottomRight, topLeft, color); 1600793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1601793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertTrue(0 != Core.countNonZero(gray0)); 1602793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1603793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1604793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testRectangleMatPointPointScalarInt() { 1605793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Point bottomRight = new Point(gray0.cols(), gray0.rows()); 1606793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Point topLeft = new Point(0, 0); 1607793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Scalar color = new Scalar(128); 1608793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1609793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Imgproc.rectangle(gray0, bottomRight, topLeft, color, 2); 1610793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Imgproc.rectangle(gray0, bottomRight, topLeft, colorBlack); 1611793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1612793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertTrue(0 != Core.countNonZero(gray0)); 1613793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1614793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1615793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testRectangleMatPointPointScalarIntInt() { 1616793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Point bottomRight = new Point(gray0.cols() / 2, gray0.rows() / 2); 1617793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Point topLeft = new Point(0, 0); 1618793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Scalar color = new Scalar(128); 1619793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1620793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Imgproc.rectangle(gray0, bottomRight, topLeft, color, 2, Imgproc.LINE_AA, 0); 1621793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Imgproc.rectangle(gray0, bottomRight, topLeft, colorBlack, 2, Imgproc.LINE_4, 0); 1622793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1623793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertTrue(0 != Core.countNonZero(gray0)); 1624793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1625793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1626793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testRectangleMatPointPointScalarIntIntInt() { 1627793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Point bottomRight1 = new Point(gray0.cols(), gray0.rows()); 1628793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Point bottomRight2 = new Point(gray0.cols() / 2, gray0.rows() / 2); 1629793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Point topLeft = new Point(0, 0); 1630793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Scalar color = new Scalar(128); 1631793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1632793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Imgproc.rectangle(gray0, bottomRight1, topLeft, color, 2, Imgproc.LINE_8, 1); 1633793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1634793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertTrue(0 != Core.countNonZero(gray0)); 1635793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1636793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Imgproc.rectangle(gray0, bottomRight2, topLeft, colorBlack, 2, Imgproc.LINE_8, 0); 1637793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1638793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(0, Core.countNonZero(gray0)); 1639793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1640793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1641793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testReduceMatMatIntInt() { 1642793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat src = new Mat(2, 2, CvType.CV_32F) { 1643793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1644793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1, 0); 1645793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 0, 3, 0); 1646793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1647793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1648793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1649793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.reduce(src, dst, 0, Core.REDUCE_AVG); 1650793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1651793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat out = new Mat(1, 2, CvType.CV_32F) { 1652793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1653793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 2, 0); 1654793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1655793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1656793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(out, dst, EPS); 1657793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1658793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1659793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testReduceMatMatIntIntInt() { 1660793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat src = new Mat(2, 2, CvType.CV_32F) { 1661793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1662793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1, 0); 1663793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 0, 2, 3); 1664793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1665793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1666793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1667793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.reduce(src, dst, 1, Core.REDUCE_SUM, CvType.CV_64F); 1668793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1669793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat out = new Mat(2, 1, CvType.CV_64F) { 1670793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1671793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1, 5); 1672793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1673793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1674793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(out, dst, EPS); 1675793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1676793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1677793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testRepeat() { 1678793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat src = new Mat(1, 2, CvType.CV_32F, new Scalar(0)); 1679793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1680793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.repeat(src, matSize, matSize / 2, dst); 1681793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1682793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray0_32f, dst, EPS); 1683793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1684793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1685793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testScaleAdd() { 1686793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.scaleAdd(gray3, 2.0, gray3, dst); 1687793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1688793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray9, dst); 1689793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1690793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1691793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testSetIdentityMat() { 1692793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.setIdentity(gray0_32f); 1693793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1694793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(grayE_32f, gray0_32f, EPS); 1695793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1696793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1697793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testSetIdentityMatScalar() { 1698793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat m = gray0_32f; 1699793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1700793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.setIdentity(m, new Scalar(5)); 1701793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1702793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler truth = new Mat(m.size(), m.type(), new Scalar(0)); 1703793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler truth.diag().setTo(new Scalar(5)); 1704793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(truth, m, EPS); 1705793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1706793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1707793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testSolveCubic() { 1708793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat coeffs = new Mat(1, 4, CvType.CV_32F) { 1709793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1710793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1, 6, 11, 6); 1711793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1712793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1713793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1714793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(3, Core.solveCubic(coeffs, dst)); 1715793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1716793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat roots = new Mat(3, 1, CvType.CV_32F) { 1717793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1718793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, -3, -1, -2); 1719793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1720793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1721793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(roots, dst, EPS); 1722793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1723793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1724793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testSolveMatMatMat() { 1725793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat a = new Mat(3, 3, CvType.CV_32F) { 1726793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1727793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1, 1, 1); 1728793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 0, 1, -2, 2); 1729793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(2, 0, 1, 2, 1); 1730793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1731793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1732793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat b = new Mat(3, 1, CvType.CV_32F) { 1733793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1734793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 0, 4, 2); 1735793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1736793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1737793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1738793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertTrue(Core.solve(a, b, dst)); 1739793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1740793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat res = new Mat(3, 1, CvType.CV_32F) { 1741793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1742793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, -12, 2, 10); 1743793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1744793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1745793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(res, dst, EPS); 1746793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1747793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1748793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testSolveMatMatMatInt() { 1749793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat a = new Mat(3, 3, CvType.CV_32F) { 1750793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1751793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1, 1, 1); 1752793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 0, 1, -2, 2); 1753793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(2, 0, 1, 2, 1); 1754793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1755793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1756793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat b = new Mat(3, 1, CvType.CV_32F) { 1757793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1758793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 0, 4, 2); 1759793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1760793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1761793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1762793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertTrue(Core.solve(a, b, dst, Core.DECOMP_QR | Core.DECOMP_NORMAL)); 1763793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1764793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat res = new Mat(3, 1, CvType.CV_32F) { 1765793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1766793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, -12, 2, 10); 1767793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1768793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1769793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(res, dst, EPS); 1770793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1771793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1772793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testSolvePolyMatMat() { 1773793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat coeffs = new Mat(4, 1, CvType.CV_32F) { 1774793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1775793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, -6, 11, -6, 1); 1776793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1777793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1778793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat roots = new Mat(); 1779793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1780793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(0.0, Core.solvePoly(coeffs, roots)); 1781793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1782793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler truth = new Mat(3, 1, CvType.CV_32FC2) { 1783793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1784793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1, 0, 2, 0, 3, 0); 1785793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1786793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1787793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(truth, roots, EPS); 1788793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1789793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1790793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testSolvePolyMatMatInt() { 1791793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat coeffs = new Mat(4, 1, CvType.CV_32F) { 1792793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1793793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, -6, 11, -6, 1); 1794793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1795793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1796793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat roots = new Mat(); 1797793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1798793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(10.198039027185569, Core.solvePoly(coeffs, roots, 1)); 1799793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1800793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler truth = new Mat(3, 1, CvType.CV_32FC2) { 1801793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1802793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1, 0, -1, 2, -2, 12); 1803793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1804793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1805793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(truth, roots, EPS); 1806793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1807793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1808793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testSort() { 1809793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat submat = gray0.submat(0, gray0.rows() / 2, 0, gray0.cols() / 2); 1810793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler submat.setTo(new Scalar(1.0)); 1811793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1812793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.sort(gray0, dst, Core.SORT_EVERY_ROW); 1813793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1814793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler submat = dst.submat(0, dst.rows() / 2, dst.cols() / 2, dst.cols()); 1815793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertTrue(submat.total() == Core.countNonZero(submat)); 1816793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1817793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.sort(gray0, dst, Core.SORT_EVERY_COLUMN); 1818793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1819793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler submat = dst.submat(dst.rows() / 2, dst.rows(), 0, dst.cols() / 2); 1820793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1821793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertTrue(submat.total() == Core.countNonZero(submat)); 1822793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1823793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1824793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testSortIdx() { 1825793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat a = Mat.eye(3, 3, CvType.CV_8UC1); 1826793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat b = new Mat(); 1827793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1828793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.sortIdx(a, b, Core.SORT_EVERY_ROW | Core.SORT_ASCENDING); 1829793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1830793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler truth = new Mat(3, 3, CvType.CV_32SC1) { 1831793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1832793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1, 2, 0); 1833793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(1, 0, 0, 2, 1); 1834793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(2, 0, 0, 1, 2); 1835793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1836793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1837793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(truth, b); 1838793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1839793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1840793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testSplit() { 1841793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat m = getMat(CvType.CV_8UC3, 1, 2, 3); 1842793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler ArrayList<Mat> cois = new ArrayList<Mat>(); 1843793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1844793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.split(m, cois); 1845793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1846793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray1, cois.get(0)); 1847793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray2, cois.get(1)); 1848793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray3, cois.get(2)); 1849793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1850793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1851793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testSqrt() { 1852793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.sqrt(gray9_32f, dst); 1853793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1854793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray3_32f, dst, EPS); 1855793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1856793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat rgba144 = new Mat(matSize, matSize, CvType.CV_32FC4, Scalar.all(144)); 1857793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat rgba12 = new Mat(matSize, matSize, CvType.CV_32FC4, Scalar.all(12)); 1858793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1859793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.sqrt(rgba144, dst); 1860793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1861793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(rgba12, dst, EPS); 1862793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1863793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1864793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testSubtractMatMatMat() { 1865793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.subtract(gray128, gray1, dst); 1866793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1867793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray127, dst); 1868793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1869793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1870793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testSubtractMatMatMatMat() { 1871793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat mask = makeMask(gray1.clone()); 1872793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler dst = gray128.clone(); 1873793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1874793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.subtract(gray128, gray1, dst, mask); 1875793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1876793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(makeMask(gray127, 128), dst); 1877793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1878793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1879793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testSubtractMatMatMatMatInt() { 1880793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.subtract(gray3, gray2, dst, gray1, CvType.CV_32F); 1881793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1882793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(gray1_32f, dst, EPS); 1883793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1884793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1885793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testSumElems() { 1886793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat src = new Mat(4, 4, CvType.CV_8U, new Scalar(10)); 1887793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1888793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Scalar res1 = Core.sumElems(src); 1889793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1890793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertScalarEqual(new Scalar(160), res1, EPS); 1891793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1892793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1893793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testSVBackSubst() { 1894793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat w = new Mat(2, 2, CvType.CV_32FC1, new Scalar(2)); 1895793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat u = new Mat(2, 2, CvType.CV_32FC1, new Scalar(4)); 1896793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat vt = new Mat(2, 2, CvType.CV_32FC1, new Scalar(2)); 1897793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat rhs = new Mat(2, 2, CvType.CV_32FC1, new Scalar(1)); 1898793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1899793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.SVBackSubst(w, u, vt, rhs, dst); 1900793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1901793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat truth = new Mat(2, 2, CvType.CV_32FC1, new Scalar(16)); 1902793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(truth, dst, EPS); 1903793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1904793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1905793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testSVDecompMatMatMatMat() { 1906793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat src = new Mat(1, 4, CvType.CV_32FC1) { 1907793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1908793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1, 4, 8, 6); 1909793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1910793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1911793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat w = new Mat(); 1912793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat u = new Mat(); 1913793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat vt = new Mat(); 1914793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1915793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.SVDecomp(src, w, u, vt); 1916793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1917793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat truthW = new Mat(1, 1, CvType.CV_32FC1, new Scalar(10.816654)); 1918793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat truthU = new Mat(1, 1, CvType.CV_32FC1, new Scalar(1)); 1919793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat truthVT = new Mat(1, 4, CvType.CV_32FC1) { 1920793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1921793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 0.09245003, 0.36980012, 0.73960024, 0.5547002); 1922793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1923793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1924793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(truthW, w, EPS); 1925793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(truthU, u, EPS); 1926793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(truthVT, vt, EPS); 1927793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1928793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1929793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testSVDecompMatMatMatMatInt() { 1930793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat src = new Mat(1, 4, CvType.CV_32FC1) { 1931793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 1932793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler put(0, 0, 1, 4, 8, 6); 1933793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1934793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler }; 1935793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat w = new Mat(); 1936793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat u = new Mat(); 1937793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat vt = new Mat(); 1938793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1939793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.SVDecomp(src, w, u, vt, Core.SVD_NO_UV); 1940793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1941793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat truthW = new Mat(1, 1, CvType.CV_32FC1, new Scalar(10.816654)); 1942793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(truthW, w, EPS); 1943793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertTrue(u.empty()); 1944793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertTrue(vt.empty()); 1945793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1946793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1947793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testTrace() { 1948793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Scalar s = Core.trace(gray1); 1949793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1950793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(new Scalar(matSize), s); 1951793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1952793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1953793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testTransform() { 1954793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat src = new Mat(2, 2, CvType.CV_32F, new Scalar(55)); 1955793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat m = Mat.eye(2, 2, CvType.CV_32FC1); 1956793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1957793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.transform(src, dst, m); 1958793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1959793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler truth = new Mat(2, 2, CvType.CV_32FC2, new Scalar(55, 1)); 1960793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(truth, dst, EPS); 1961793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1962793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1963793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testTranspose() { 1964793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler gray0.submat(0, gray0.rows() / 2, 0, gray0.cols()).setTo(new Scalar(1)); 1965793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat destination = getMat(CvType.CV_8U, 0); 1966793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1967793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.transpose(gray0, destination); 1968793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1969793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat subdst = destination.submat(0, destination.rows(), 0, destination.cols() / 2); 1970793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertTrue(subdst.total() == Core.countNonZero(subdst)); 1971793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1972793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1973793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testVconcat() { 1974793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler List<Mat> mats = Arrays.asList(Mat.eye(3, 3, CvType.CV_8U), Mat.zeros(2, 3, CvType.CV_8U)); 1975793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1976793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.vconcat(mats, dst); 1977793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1978793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(Mat.eye(5, 3, CvType.CV_8U), dst); 1979793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1980793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1981793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1982793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testCopyMakeBorderMatMatIntIntIntIntInt() { 1983793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat src = new Mat(2, 2, CvType.CV_32F, new Scalar(1)); 1984793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler int border = 2; 1985793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1986793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.copyMakeBorder(src, dst, border, border, border, border, Core.BORDER_REPLICATE); 1987793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1988793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler truth = new Mat(6, 6, CvType.CV_32F, new Scalar(1)); 1989793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(truth, dst, EPS); 1990793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 1991793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1992793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testCopyMakeBorderMatMatIntIntIntIntIntScalar() { 1993793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat src = new Mat(2, 2, CvType.CV_32F, new Scalar(1)); 1994793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1995793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Scalar value = new Scalar(0); 1996793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler int border = 2; 1997793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 1998793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Core.copyMakeBorder(src, dst, border, border, border, border, Core.BORDER_REPLICATE, value); 1999793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler // TODO_: write better test (use Core.BORDER_CONSTANT) 2000793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 2001793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler truth = new Mat(6, 6, CvType.CV_32F, new Scalar(1)); 2002793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertMatEqual(truth, dst, EPS); 2003793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 2004793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 2005793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler public void testBorderInterpolate() { 2006793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler float val1 = Core.borderInterpolate(100, 150, Core.BORDER_REFLECT_101); 2007793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(100f, val1); 2008793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 2009793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler float val2 = Core.borderInterpolate(-5, 10, Core.BORDER_WRAP); 2010793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler assertEquals(5f, val2); 2011793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 2012793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 2013793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler} 2014