mirror of
https://github.com/opencv/opencv.git
synced 2024-12-15 01:39:10 +08:00
8f3867756c
fixed the ordering of contour convex hull points * partially fixed the issue #4539 * fixed warnings and test failures * fixed integer overflow (issue #14521) * added comment to force buildbot to re-run * extended the test for the issue 4539. Check the expected behaviour on the original contour as well * added comment; fixed typo, renamed another variable for a little better clarity * added yet another part to the test for issue #4539, where we run convexHull and convexityDetects on the original contour, without any manipulations. the rest of the test stays the same
2199 lines
72 KiB
Java
2199 lines
72 KiB
Java
package org.opencv.test.imgproc;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.Arrays;
|
|
import java.util.List;
|
|
|
|
import org.opencv.core.Core;
|
|
import org.opencv.core.CvType;
|
|
import org.opencv.core.Mat;
|
|
import org.opencv.core.MatOfFloat;
|
|
import org.opencv.core.MatOfInt;
|
|
import org.opencv.core.MatOfInt4;
|
|
import org.opencv.core.MatOfPoint;
|
|
import org.opencv.core.MatOfPoint2f;
|
|
import org.opencv.core.Point;
|
|
import org.opencv.core.Rect;
|
|
import org.opencv.core.RotatedRect;
|
|
import org.opencv.core.Scalar;
|
|
import org.opencv.core.Size;
|
|
import org.opencv.core.TermCriteria;
|
|
import org.opencv.imgproc.Imgproc;
|
|
import org.opencv.test.OpenCVTestCase;
|
|
|
|
public class ImgprocTest extends OpenCVTestCase {
|
|
|
|
Point anchorPoint;
|
|
private int imgprocSz;
|
|
Size size;
|
|
|
|
@Override
|
|
protected void setUp() throws Exception {
|
|
super.setUp();
|
|
|
|
imgprocSz = 2;
|
|
anchorPoint = new Point(2, 2);
|
|
size = new Size(3, 3);
|
|
}
|
|
|
|
public void testAccumulateMatMat() {
|
|
Mat src = getMat(CvType.CV_64F, 2);
|
|
Mat dst = getMat(CvType.CV_64F, 0);
|
|
Mat dst2 = src.clone();
|
|
|
|
Imgproc.accumulate(src, dst);
|
|
Imgproc.accumulate(src, dst2);
|
|
|
|
assertMatEqual(src, dst, EPS);
|
|
assertMatEqual(getMat(CvType.CV_64F, 4), dst2, EPS);
|
|
}
|
|
|
|
public void testAccumulateMatMatMat() {
|
|
Mat src = getMat(CvType.CV_64F, 2);
|
|
Mat mask = makeMask(getMat(CvType.CV_8U, 1));
|
|
Mat dst = getMat(CvType.CV_64F, 0);
|
|
Mat dst2 = src.clone();
|
|
|
|
Imgproc.accumulate(src, dst, mask);
|
|
Imgproc.accumulate(src, dst2, mask);
|
|
|
|
assertMatEqual(makeMask(getMat(CvType.CV_64F, 2)), dst, EPS);
|
|
assertMatEqual(makeMask(getMat(CvType.CV_64F, 4), 2), dst2, EPS);
|
|
}
|
|
|
|
public void testAccumulateProductMatMatMat() {
|
|
Mat src = getMat(CvType.CV_64F, 2);
|
|
Mat dst = getMat(CvType.CV_64F, 0);
|
|
Mat dst2 = src.clone();
|
|
|
|
Imgproc.accumulateProduct(src, src, dst);
|
|
Imgproc.accumulateProduct(src, dst, dst2);
|
|
|
|
assertMatEqual(getMat(CvType.CV_64F, 4), dst, EPS);
|
|
assertMatEqual(getMat(CvType.CV_64F, 10), dst2, EPS);
|
|
}
|
|
|
|
public void testAccumulateProductMatMatMatMat() {
|
|
Mat src = getMat(CvType.CV_64F, 2);
|
|
Mat mask = makeMask(getMat(CvType.CV_8U, 1));
|
|
Mat dst = getMat(CvType.CV_64F, 0);
|
|
Mat dst2 = src.clone();
|
|
|
|
Imgproc.accumulateProduct(src, src, dst, mask);
|
|
Imgproc.accumulateProduct(src, dst, dst2, mask);
|
|
|
|
assertMatEqual(makeMask(getMat(CvType.CV_64F, 4)), dst, EPS);
|
|
assertMatEqual(makeMask(getMat(CvType.CV_64F, 10), 2), dst2, EPS);
|
|
}
|
|
|
|
public void testAccumulateSquareMatMat() {
|
|
Mat src = getMat(CvType.CV_64F, 2);
|
|
Mat dst = getMat(CvType.CV_64F, 0);
|
|
Mat dst2 = src.clone();
|
|
|
|
Imgproc.accumulateSquare(src, dst);
|
|
Imgproc.accumulateSquare(src, dst2);
|
|
|
|
assertMatEqual(getMat(CvType.CV_64F, 4), dst, EPS);
|
|
assertMatEqual(getMat(CvType.CV_64F, 6), dst2, EPS);
|
|
}
|
|
|
|
public void testAccumulateSquareMatMatMat() {
|
|
Mat src = getMat(CvType.CV_64F, 2);
|
|
Mat mask = makeMask(getMat(CvType.CV_8U, 1));
|
|
Mat dst = getMat(CvType.CV_64F, 0);
|
|
Mat dst2 = src.clone();
|
|
|
|
Imgproc.accumulateSquare(src, dst, mask);
|
|
Imgproc.accumulateSquare(src, dst2, mask);
|
|
|
|
assertMatEqual(makeMask(getMat(CvType.CV_64F, 4)), dst, EPS);
|
|
assertMatEqual(makeMask(getMat(CvType.CV_64F, 6), 2), dst2, EPS);
|
|
}
|
|
|
|
public void testAccumulateWeightedMatMatDouble() {
|
|
Mat src = getMat(CvType.CV_64F, 2);
|
|
Mat dst = getMat(CvType.CV_64F, 4);
|
|
Mat dst2 = src.clone();
|
|
|
|
Imgproc.accumulateWeighted(src, dst, 0.5);
|
|
Imgproc.accumulateWeighted(src, dst2, 2);
|
|
|
|
assertMatEqual(getMat(CvType.CV_64F, 3), dst, EPS);
|
|
assertMatEqual(getMat(CvType.CV_64F, 2), dst2, EPS);
|
|
}
|
|
|
|
public void testAccumulateWeightedMatMatDoubleMat() {
|
|
Mat src = getMat(CvType.CV_64F, 2);
|
|
Mat mask = makeMask(getMat(CvType.CV_8U, 1));
|
|
Mat dst = getMat(CvType.CV_64F, 4);
|
|
Mat dst2 = src.clone();
|
|
|
|
Imgproc.accumulateWeighted(src, dst, 0.5, mask);
|
|
Imgproc.accumulateWeighted(src, dst2, 2, mask);
|
|
|
|
assertMatEqual(makeMask(getMat(CvType.CV_64F, 3), 4), dst, EPS);
|
|
assertMatEqual(getMat(CvType.CV_64F, 2), dst2, EPS);
|
|
}
|
|
|
|
public void testAdaptiveThreshold() {
|
|
Mat src = makeMask(getMat(CvType.CV_8U, 50), 20);
|
|
Mat dst = new Mat();
|
|
|
|
Imgproc.adaptiveThreshold(src, dst, 1, Imgproc.ADAPTIVE_THRESH_MEAN_C, Imgproc.THRESH_BINARY, 3, 0);
|
|
|
|
assertEquals(src.rows(), Core.countNonZero(dst));
|
|
}
|
|
|
|
public void testApproxPolyDP() {
|
|
MatOfPoint2f curve = new MatOfPoint2f(new Point(1, 3), new Point(2, 4), new Point(3, 5), new Point(4, 4), new Point(5, 3));
|
|
|
|
MatOfPoint2f approxCurve = new MatOfPoint2f();
|
|
|
|
Imgproc.approxPolyDP(curve, approxCurve, EPS, true);
|
|
|
|
List<Point> approxCurveGold = new ArrayList<Point>(3);
|
|
approxCurveGold.add(new Point(1, 3));
|
|
approxCurveGold.add(new Point(3, 5));
|
|
approxCurveGold.add(new Point(5, 3));
|
|
|
|
assertListPointEquals(approxCurve.toList(), approxCurveGold, EPS);
|
|
}
|
|
|
|
public void testArcLength() {
|
|
MatOfPoint2f curve = new MatOfPoint2f(new Point(1, 3), new Point(2, 4), new Point(3, 5), new Point(4, 4), new Point(5, 3));
|
|
|
|
double arcLength = Imgproc.arcLength(curve, false);
|
|
|
|
assertEquals(5.656854249, arcLength, 0.000001);
|
|
}
|
|
|
|
public void testBilateralFilterMatMatIntDoubleDouble() {
|
|
Imgproc.bilateralFilter(gray255, dst, 5, 10, 5);
|
|
|
|
assertMatEqual(gray255, dst);
|
|
// TODO_: write better test
|
|
}
|
|
|
|
public void testBilateralFilterMatMatIntDoubleDoubleInt() {
|
|
Imgproc.bilateralFilter(gray255, dst, 5, 10, 5, Core.BORDER_REFLECT);
|
|
|
|
assertMatEqual(gray255, dst);
|
|
// TODO_: write better test
|
|
}
|
|
|
|
public void testBlurMatMatSize() {
|
|
Imgproc.blur(gray0, dst, size);
|
|
assertMatEqual(gray0, dst);
|
|
|
|
Imgproc.blur(gray255, dst, size);
|
|
assertMatEqual(gray255, dst);
|
|
// TODO_: write better test
|
|
}
|
|
|
|
public void testBlurMatMatSizePoint() {
|
|
Imgproc.blur(gray0, dst, size, anchorPoint);
|
|
assertMatEqual(gray0, dst);
|
|
// TODO_: write better test
|
|
}
|
|
|
|
public void testBlurMatMatSizePointInt() {
|
|
Imgproc.blur(gray0, dst, size, anchorPoint, Core.BORDER_REFLECT);
|
|
assertMatEqual(gray0, dst);
|
|
// TODO_: write better test
|
|
}
|
|
|
|
public void testBoundingRect() {
|
|
MatOfPoint points = new MatOfPoint(new Point(0, 0), new Point(0, 4), new Point(4, 0), new Point(4, 4));
|
|
Point p1 = new Point(1, 1);
|
|
Point p2 = new Point(-5, -2);
|
|
|
|
Rect bbox = Imgproc.boundingRect(points);
|
|
|
|
assertTrue(bbox.contains(p1));
|
|
assertFalse(bbox.contains(p2));
|
|
}
|
|
|
|
public void testBoxFilterMatMatIntSize() {
|
|
Size size = new Size(3, 3);
|
|
Imgproc.boxFilter(gray0, dst, 8, size);
|
|
assertMatEqual(gray0, dst);
|
|
// TODO_: write better test
|
|
}
|
|
|
|
public void testBoxFilterMatMatIntSizePointBoolean() {
|
|
Imgproc.boxFilter(gray255, dst, 8, size, anchorPoint, false);
|
|
assertMatEqual(gray255, dst);
|
|
// TODO_: write better test
|
|
}
|
|
|
|
public void testBoxFilterMatMatIntSizePointBooleanInt() {
|
|
Imgproc.boxFilter(gray255, dst, 8, size, anchorPoint, false, Core.BORDER_REFLECT);
|
|
assertMatEqual(gray255, dst);
|
|
// TODO_: write better test
|
|
}
|
|
|
|
public void testCalcBackProject() {
|
|
List<Mat> images = Arrays.asList(grayChess);
|
|
MatOfInt channels = new MatOfInt(0);
|
|
MatOfInt histSize = new MatOfInt(10);
|
|
MatOfFloat ranges = new MatOfFloat(0f, 256f);
|
|
|
|
Mat hist = new Mat();
|
|
Imgproc.calcHist(images, channels, new Mat(), hist, histSize, ranges);
|
|
Core.normalize(hist, hist);
|
|
|
|
Imgproc.calcBackProject(images, channels, hist, dst, ranges, 255);
|
|
|
|
assertEquals(grayChess.size(), dst.size());
|
|
assertEquals(grayChess.depth(), dst.depth());
|
|
assertFalse(0 == Core.countNonZero(dst));
|
|
}
|
|
|
|
public void testCalcHistListOfMatListOfIntegerMatMatListOfIntegerListOfFloat() {
|
|
List<Mat> images = Arrays.asList(gray128);
|
|
MatOfInt channels = new MatOfInt(0);
|
|
MatOfInt histSize = new MatOfInt(10);
|
|
MatOfFloat ranges = new MatOfFloat(0f, 256f);
|
|
Mat hist = new Mat();
|
|
|
|
Imgproc.calcHist(images, channels, new Mat(), hist, histSize, ranges);
|
|
|
|
truth = new Mat(10, 1, CvType.CV_32F, Scalar.all(0)) {
|
|
{
|
|
put(5, 0, 100);
|
|
}
|
|
};
|
|
assertMatEqual(truth, hist, EPS);
|
|
}
|
|
|
|
public void testCalcHistListOfMatListOfIntegerMatMatListOfIntegerListOfFloat2D() {
|
|
List<Mat> images = Arrays.asList(gray255, gray128);
|
|
MatOfInt channels = new MatOfInt(0, 1);
|
|
MatOfInt histSize = new MatOfInt(10, 10);
|
|
MatOfFloat ranges = new MatOfFloat(0f, 256f, 0f, 256f);
|
|
Mat hist = new Mat();
|
|
|
|
Imgproc.calcHist(images, channels, new Mat(), hist, histSize, ranges);
|
|
|
|
truth = new Mat(10, 10, CvType.CV_32F, Scalar.all(0)) {
|
|
{
|
|
put(9, 5, 100);
|
|
}
|
|
};
|
|
assertMatEqual(truth, hist, EPS);
|
|
}
|
|
|
|
public void testCalcHistListOfMatListOfIntegerMatMatListOfIntegerListOfFloat3D() {
|
|
List<Mat> images = Arrays.asList(rgbLena);
|
|
|
|
Mat hist3D = new Mat();
|
|
List<Mat> histList = Arrays.asList( new Mat[] {new Mat(), new Mat(), new Mat()} );
|
|
|
|
MatOfInt histSize = new MatOfInt(10);
|
|
MatOfFloat ranges = new MatOfFloat(0f, 256f);
|
|
|
|
for(int i=0; i<rgbLena.channels(); i++)
|
|
{
|
|
Imgproc.calcHist(images, new MatOfInt(i), new Mat(), histList.get(i), histSize, ranges);
|
|
|
|
assertEquals(10, histList.get(i).checkVector(1));
|
|
}
|
|
|
|
Core.merge(histList, hist3D);
|
|
|
|
assertEquals(CvType.CV_32FC3, hist3D.type());
|
|
assertEquals(10, hist3D.checkVector(3));
|
|
|
|
Mat truth = new Mat(10, 1, CvType.CV_32FC3);
|
|
truth.put(0, 0,
|
|
0, 24870, 0,
|
|
1863, 31926, 1,
|
|
56682, 37677, 2260,
|
|
77278, 44751, 32436,
|
|
69397, 41343, 18526,
|
|
27180, 40407, 18658,
|
|
21101, 15993, 32042,
|
|
8343, 18585, 47786,
|
|
300, 6567, 80988,
|
|
0, 25, 29447
|
|
);
|
|
|
|
assertMatEqual(truth, hist3D, EPS);
|
|
}
|
|
|
|
public void testCalcHistListOfMatListOfIntegerMatMatListOfIntegerListOfFloatBoolean() {
|
|
List<Mat> images = Arrays.asList(gray255, gray128);
|
|
MatOfInt channels = new MatOfInt(0, 1);
|
|
MatOfInt histSize = new MatOfInt(10, 10);
|
|
MatOfFloat ranges = new MatOfFloat(0f, 256f, 0f, 256f);
|
|
Mat hist = new Mat();
|
|
|
|
Imgproc.calcHist(images, channels, new Mat(), hist, histSize, ranges, true);
|
|
|
|
truth = new Mat(10, 10, CvType.CV_32F, Scalar.all(0)) {
|
|
{
|
|
put(9, 5, 100);
|
|
}
|
|
};
|
|
assertMatEqual(truth, hist, EPS);
|
|
}
|
|
|
|
public void testCannyMatMatDoubleDouble() {
|
|
Imgproc.Canny(gray255, dst, 5, 10);
|
|
assertMatEqual(gray0, dst);
|
|
// TODO_: write better test
|
|
}
|
|
|
|
public void testCannyMatMatDoubleDoubleIntBoolean() {
|
|
Imgproc.Canny(gray0, dst, 5, 10, 5, true);
|
|
assertMatEqual(gray0, dst);
|
|
// TODO_: write better test
|
|
}
|
|
|
|
public void testCompareHist() {
|
|
Mat H1 = new Mat(3, 1, CvType.CV_32F);
|
|
Mat H2 = new Mat(3, 1, CvType.CV_32F);
|
|
H1.put(0, 0, 1, 2, 3);
|
|
H2.put(0, 0, 4, 5, 6);
|
|
|
|
double distance = Imgproc.compareHist(H1, H2, Imgproc.CV_COMP_CORREL);
|
|
|
|
assertEquals(1., distance, EPS);
|
|
}
|
|
|
|
public void testContourAreaMat() {
|
|
Mat contour = new Mat(1, 4, CvType.CV_32FC2);
|
|
contour.put(0, 0, 0, 0, 10, 0, 10, 10, 5, 4);
|
|
|
|
double area = Imgproc.contourArea(contour);
|
|
|
|
assertEquals(45., area, EPS);
|
|
}
|
|
|
|
public void testContourAreaMatBoolean() {
|
|
Mat contour = new Mat(1, 4, CvType.CV_32FC2);
|
|
contour.put(0, 0, 0, 0, 10, 0, 10, 10, 5, 4);
|
|
|
|
double area = Imgproc.contourArea(contour, true);
|
|
|
|
assertEquals(45., area, EPS);
|
|
// TODO_: write better test
|
|
}
|
|
|
|
public void testConvertMapsMatMatMatMatInt() {
|
|
Mat map1 = new Mat(1, 4, CvType.CV_32FC1, new Scalar(1));
|
|
Mat map2 = new Mat(1, 4, CvType.CV_32FC1, new Scalar(2));
|
|
Mat dstmap1 = new Mat(1, 4, CvType.CV_16SC2);
|
|
Mat dstmap2 = new Mat(1, 4, CvType.CV_16UC1);
|
|
|
|
Imgproc.convertMaps(map1, map2, dstmap1, dstmap2, CvType.CV_16SC2);
|
|
|
|
Mat truthMap1 = new Mat(1, 4, CvType.CV_16SC2);
|
|
truthMap1.put(0, 0, 1, 2, 1, 2, 1, 2, 1, 2);
|
|
assertMatEqual(truthMap1, dstmap1);
|
|
Mat truthMap2 = new Mat(1, 4, CvType.CV_16UC1, new Scalar(0));
|
|
assertMatEqual(truthMap2, dstmap2);
|
|
}
|
|
|
|
public void testConvertMapsMatMatMatMatIntBoolean() {
|
|
Mat map1 = new Mat(1, 3, CvType.CV_32FC1, new Scalar(2));
|
|
Mat map2 = new Mat(1, 3, CvType.CV_32FC1, new Scalar(4));
|
|
Mat dstmap1 = new Mat(1, 3, CvType.CV_16SC2);
|
|
Mat dstmap2 = new Mat(1, 3, CvType.CV_16UC1);
|
|
|
|
Imgproc.convertMaps(map1, map2, dstmap1, dstmap2, CvType.CV_16SC2, false);
|
|
// TODO_: write better test (last param == true)
|
|
|
|
Mat truthMap1 = new Mat(1, 3, CvType.CV_16SC2);
|
|
truthMap1.put(0, 0, 2, 4, 2, 4, 2, 4);
|
|
assertMatEqual(truthMap1, dstmap1);
|
|
Mat truthMap2 = new Mat(1, 3, CvType.CV_16UC1, new Scalar(0));
|
|
assertMatEqual(truthMap2, dstmap2);
|
|
}
|
|
|
|
public void testConvexHullMatMat() {
|
|
MatOfPoint points = new MatOfPoint(
|
|
new Point(20, 0),
|
|
new Point(40, 0),
|
|
new Point(30, 20),
|
|
new Point(0, 20),
|
|
new Point(20, 10),
|
|
new Point(30, 10)
|
|
);
|
|
|
|
MatOfInt hull = new MatOfInt();
|
|
|
|
Imgproc.convexHull(points, hull);
|
|
|
|
MatOfInt expHull = new MatOfInt(
|
|
0, 1, 2, 3
|
|
);
|
|
assertMatEqual(expHull, hull, EPS);
|
|
}
|
|
|
|
public void testConvexHullMatMatBooleanBoolean() {
|
|
MatOfPoint points = new MatOfPoint(
|
|
new Point(2, 0),
|
|
new Point(4, 0),
|
|
new Point(3, 2),
|
|
new Point(0, 2),
|
|
new Point(2, 1),
|
|
new Point(3, 1)
|
|
);
|
|
|
|
MatOfInt hull = new MatOfInt();
|
|
|
|
Imgproc.convexHull(points, hull, true);
|
|
|
|
MatOfInt expHull = new MatOfInt(
|
|
3, 2, 1, 0
|
|
);
|
|
assertMatEqual(expHull, hull, EPS);
|
|
}
|
|
|
|
public void testConvexityDefects() {
|
|
MatOfPoint points = new MatOfPoint(
|
|
new Point(20, 0),
|
|
new Point(40, 0),
|
|
new Point(30, 20),
|
|
new Point(0, 20),
|
|
new Point(20, 10),
|
|
new Point(30, 10)
|
|
);
|
|
|
|
MatOfInt hull = new MatOfInt();
|
|
Imgproc.convexHull(points, hull);
|
|
|
|
MatOfInt4 convexityDefects = new MatOfInt4();
|
|
Imgproc.convexityDefects(points, hull, convexityDefects);
|
|
|
|
assertMatEqual(new MatOfInt4(3, 0, 5, 3620), convexityDefects);
|
|
}
|
|
|
|
public void testCornerEigenValsAndVecsMatMatIntInt() {
|
|
fail("Not yet implemented");
|
|
// TODO: write better test
|
|
Mat src = new Mat(imgprocSz, imgprocSz, CvType.CV_32FC1);
|
|
src.put(0, 0, 1, 2);
|
|
src.put(1, 0, 4, 2);
|
|
|
|
int blockSize = 3;
|
|
int ksize = 5;
|
|
|
|
// TODO: eigen vals and vectors returned = 0 for most src matrices
|
|
Imgproc.cornerEigenValsAndVecs(src, dst, blockSize, ksize);
|
|
truth = new Mat(imgprocSz, imgprocSz, CvType.CV_32FC(6), new Scalar(0));
|
|
assertMatEqual(truth, dst, EPS);
|
|
}
|
|
|
|
public void testCornerEigenValsAndVecsMatMatIntIntInt() {
|
|
fail("Not yet implemented");
|
|
// TODO: write better test
|
|
Mat src = new Mat(4, 4, CvType.CV_32FC1, new Scalar(128));
|
|
|
|
int blockSize = 3;
|
|
int ksize = 5;
|
|
|
|
truth = new Mat(4, 4, CvType.CV_32FC(6), new Scalar(0));
|
|
|
|
Imgproc.cornerEigenValsAndVecs(src, dst, blockSize, ksize, Core.BORDER_REFLECT);
|
|
assertMatEqual(truth, dst, EPS);
|
|
}
|
|
|
|
public void testCornerHarrisMatMatIntIntDouble() {
|
|
fail("Not yet implemented");
|
|
// TODO: write better test
|
|
|
|
truth = new Mat(matSize, matSize, CvType.CV_32FC1, new Scalar(0));
|
|
int blockSize = 5;
|
|
int ksize = 7;
|
|
double k = 0.1;
|
|
Imgproc.cornerHarris(gray128, dst, blockSize, ksize, k);
|
|
assertMatEqual(truth, dst, EPS);
|
|
}
|
|
|
|
public void testCornerHarrisMatMatIntIntDoubleInt() {
|
|
fail("Not yet implemented");
|
|
// TODO: write better test
|
|
|
|
truth = new Mat(matSize, matSize, CvType.CV_32FC1, new Scalar(0));
|
|
int blockSize = 5;
|
|
int ksize = 7;
|
|
double k = 0.1;
|
|
Imgproc.cornerHarris(gray255, dst, blockSize, ksize, k, Core.BORDER_REFLECT);
|
|
assertMatEqual(truth, dst, EPS);
|
|
}
|
|
|
|
public void testCornerMinEigenValMatMatInt() {
|
|
fail("Not yet implemented");
|
|
// TODO: write better test
|
|
|
|
Mat src = new Mat(imgprocSz, imgprocSz, CvType.CV_32FC1);
|
|
src.put(0, 0, 1, 2);
|
|
src.put(1, 0, 2, 1);
|
|
int blockSize = 5;
|
|
|
|
Imgproc.cornerMinEigenVal(src, dst, blockSize);
|
|
|
|
truth = new Mat(imgprocSz, imgprocSz, CvType.CV_32FC1, new Scalar(0));
|
|
assertMatEqual(truth, dst, EPS);
|
|
|
|
Imgproc.cornerMinEigenVal(gray255, dst, blockSize);
|
|
|
|
truth = new Mat(matSize, matSize, CvType.CV_32FC1, new Scalar(0));
|
|
assertMatEqual(truth, dst, EPS);
|
|
}
|
|
|
|
public void testCornerMinEigenValMatMatIntInt() {
|
|
Mat src = Mat.eye(3, 3, CvType.CV_32FC1);
|
|
int blockSize = 3;
|
|
int ksize = 5;
|
|
|
|
Imgproc.cornerMinEigenVal(src, dst, blockSize, ksize);
|
|
|
|
truth = new Mat(3, 3, CvType.CV_32FC1) {
|
|
{
|
|
put(0, 0, 1. / 18, 1. / 36, 1. / 18);
|
|
put(1, 0, 1. / 36, 1. / 18, 1. / 36);
|
|
put(2, 0, 1. / 18, 1. / 36, 1. / 18);
|
|
}
|
|
};
|
|
assertMatEqual(truth, dst, EPS);
|
|
}
|
|
|
|
public void testCornerMinEigenValMatMatIntIntInt() {
|
|
Mat src = Mat.eye(3, 3, CvType.CV_32FC1);
|
|
int blockSize = 3;
|
|
int ksize = 5;
|
|
|
|
Imgproc.cornerMinEigenVal(src, dst, blockSize, ksize, Core.BORDER_REFLECT);
|
|
|
|
truth = new Mat(3, 3, CvType.CV_32FC1) {
|
|
{
|
|
put(0, 0, 0.68055558, 0.92708349, 0.5868057);
|
|
put(1, 0, 0.92708343, 0.92708343, 0.92708343);
|
|
put(2, 0, 0.58680564, 0.92708343, 0.68055564);
|
|
}
|
|
};
|
|
assertMatEqual(truth, dst, EPS);
|
|
}
|
|
|
|
public void testCornerSubPix() {
|
|
Mat img = new Mat(matSize, matSize, CvType.CV_8U, new Scalar(128));
|
|
Point truthPosition = new Point(img.cols() / 2, img.rows() / 2);
|
|
|
|
Rect r = new Rect(new Point(0, 0), truthPosition);
|
|
Imgproc.rectangle(img, r.tl(), r.br(), new Scalar(0), Core.FILLED);
|
|
MatOfPoint2f corners = new MatOfPoint2f(new Point(truthPosition.x + 1, truthPosition.y + 1));
|
|
Size winSize = new Size(2, 2);
|
|
Size zeroZone = new Size(-1, -1);
|
|
TermCriteria criteria = new TermCriteria(TermCriteria.EPS, 0, 0.01);
|
|
|
|
Imgproc.cornerSubPix(img, corners, winSize, zeroZone, criteria);
|
|
|
|
assertPointEquals(truthPosition, corners.toList().get(0), weakEPS);
|
|
}
|
|
|
|
public void testCvtColorMatMatInt() {
|
|
fail("Not yet implemented");
|
|
}
|
|
|
|
public void testCvtColorMatMatIntInt() {
|
|
fail("Not yet implemented");
|
|
}
|
|
|
|
public void testDilateMatMatMat() {
|
|
Mat kernel = new Mat();
|
|
|
|
Imgproc.dilate(gray255, dst, kernel);
|
|
|
|
assertMatEqual(gray255, dst);
|
|
|
|
Imgproc.dilate(gray1, dst, kernel);
|
|
|
|
assertMatEqual(gray1, dst);
|
|
// TODO_: write better test
|
|
}
|
|
|
|
public void testDilateMatMatMatPoint() {
|
|
fail("Not yet implemented");
|
|
}
|
|
|
|
public void testDilateMatMatMatPointInt() {
|
|
fail("Not yet implemented");
|
|
}
|
|
|
|
public void testDilateMatMatMatPointIntInt() {
|
|
fail("Not yet implemented");
|
|
}
|
|
|
|
public void testDilateMatMatMatPointIntIntScalar() {
|
|
fail("Not yet implemented");
|
|
}
|
|
|
|
public void testDistanceTransformWithLabels() {
|
|
Mat dstLables = getMat(CvType.CV_32SC1, 0);
|
|
Mat labels = new Mat();
|
|
|
|
Imgproc.distanceTransformWithLabels(gray128, dst, labels, Imgproc.CV_DIST_L2, 3);
|
|
|
|
assertMatEqual(dstLables, labels);
|
|
assertMatEqual(getMat(CvType.CV_32FC1, 8192), dst, EPS);
|
|
}
|
|
|
|
public void testDrawContoursMatListOfMatIntScalar() {
|
|
Imgproc.rectangle(gray0, new Point(1, 2), new Point(7, 8), new Scalar(100));
|
|
List<MatOfPoint> contours = new ArrayList<MatOfPoint>();
|
|
Imgproc.findContours(gray0, contours, new Mat(), Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE);
|
|
|
|
Imgproc.drawContours(gray0, contours, -1, new Scalar(0));
|
|
|
|
assertEquals(0, Core.countNonZero(gray0));
|
|
}
|
|
|
|
public void testDrawContoursMatListOfMatIntScalarInt() {
|
|
Imgproc.rectangle(gray0, new Point(1, 2), new Point(7, 8), new Scalar(100));
|
|
List<MatOfPoint> contours = new ArrayList<MatOfPoint>();
|
|
Imgproc.findContours(gray0, contours, new Mat(), Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE);
|
|
|
|
Imgproc.drawContours(gray0, contours, -1, new Scalar(0), Core.FILLED);
|
|
|
|
assertEquals(0, Core.countNonZero(gray0));
|
|
}
|
|
|
|
|
|
public void testDrawContoursMatListOfMatIntScalarIntIntMatIntPoint() {
|
|
fail("Not yet implemented");
|
|
}
|
|
|
|
public void testEqualizeHist() {
|
|
Imgproc.equalizeHist(gray0, dst);
|
|
assertMatEqual(gray0, dst);
|
|
|
|
Imgproc.equalizeHist(gray255, dst);
|
|
assertMatEqual(gray255, dst);
|
|
// TODO_: write better test
|
|
}
|
|
|
|
public void testErodeMatMatMat() {
|
|
Mat kernel = new Mat();
|
|
|
|
Imgproc.erode(gray128, dst, kernel);
|
|
|
|
assertMatEqual(gray128, dst);
|
|
}
|
|
|
|
public void testErodeMatMatMatPointInt() {
|
|
Mat src = new Mat(3, 3, CvType.CV_8U) {
|
|
{
|
|
put(0, 0, 15, 9, 10);
|
|
put(1, 0, 10, 8, 12);
|
|
put(2, 0, 12, 20, 25);
|
|
}
|
|
};
|
|
Mat kernel = new Mat();
|
|
|
|
Imgproc.erode(src, dst, kernel, anchorPoint, 10);
|
|
|
|
truth = new Mat(3, 3, CvType.CV_8U, new Scalar(8));
|
|
assertMatEqual(truth, dst);
|
|
}
|
|
|
|
public void testErodeMatMatMatPointIntIntScalar() {
|
|
Mat src = new Mat(3, 3, CvType.CV_8U) {
|
|
{
|
|
put(0, 0, 15, 9, 10);
|
|
put(1, 0, 10, 8, 12);
|
|
put(2, 0, 12, 20, 25);
|
|
}
|
|
};
|
|
Mat kernel = new Mat();
|
|
Scalar sc = new Scalar(3, 3);
|
|
|
|
Imgproc.erode(src, dst, kernel, anchorPoint, 10, Core.BORDER_REFLECT, sc);
|
|
|
|
truth = new Mat(3, 3, CvType.CV_8U, new Scalar(8));
|
|
assertMatEqual(truth, dst);
|
|
}
|
|
|
|
public void testFilter2DMatMatIntMat() {
|
|
Mat src = Mat.eye(4, 4, CvType.CV_32F);
|
|
Mat kernel = new Mat(imgprocSz, imgprocSz, CvType.CV_32F, new Scalar(1));
|
|
|
|
Imgproc.filter2D(src, dst, -1, kernel);
|
|
|
|
truth = new Mat(4, 4, CvType.CV_32F) {
|
|
{
|
|
put(0, 0, 2, 2, 1, 0);
|
|
put(1, 0, 2, 2, 1, 0);
|
|
put(2, 0, 1, 1, 2, 1);
|
|
put(3, 0, 0, 0, 1, 2);
|
|
}
|
|
};
|
|
assertMatEqual(truth, dst, EPS);
|
|
}
|
|
|
|
public void testFilter2DMatMatIntMatPointDouble() {
|
|
fail("Not yet implemented");
|
|
}
|
|
|
|
public void testFilter2DMatMatIntMatPointDoubleInt() {
|
|
Mat kernel = new Mat(imgprocSz, imgprocSz, CvType.CV_32F, new Scalar(0));
|
|
Point point = new Point(0, 0);
|
|
|
|
Imgproc.filter2D(gray128, dst, -1, kernel, point, 2, Core.BORDER_CONSTANT);
|
|
|
|
assertMatEqual(gray2, dst);
|
|
}
|
|
|
|
public void testFindContoursMatListOfMatMatIntInt() {
|
|
Mat img = new Mat(50, 50, CvType.CV_8UC1, new Scalar(0));
|
|
List<MatOfPoint> contours = new ArrayList<MatOfPoint>(5);
|
|
Mat hierarchy = new Mat();
|
|
|
|
Imgproc.findContours(img, contours, hierarchy, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE);
|
|
|
|
// no contours on empty image
|
|
assertEquals(contours.size(), 0);
|
|
assertEquals(contours.size(), hierarchy.total());
|
|
|
|
Imgproc.rectangle(img, new Point(10, 20), new Point(20, 30), new Scalar(100), 3, Imgproc.LINE_AA, 0);
|
|
Imgproc.rectangle(img, new Point(30, 35), new Point(40, 45), new Scalar(200));
|
|
|
|
Imgproc.findContours(img, contours, hierarchy, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE);
|
|
|
|
// two contours of two rectangles
|
|
assertEquals(contours.size(), 2);
|
|
assertEquals(contours.size(), hierarchy.total());
|
|
}
|
|
|
|
public void testFindContoursMatListOfMatMatIntIntPoint() {
|
|
Mat img = new Mat(50, 50, CvType.CV_8UC1, new Scalar(0));
|
|
Mat img2 = img.submat(5, 50, 3, 50);
|
|
List<MatOfPoint> contours = new ArrayList<MatOfPoint>();
|
|
List<MatOfPoint> contours2 = new ArrayList<MatOfPoint>();
|
|
Mat hierarchy = new Mat();
|
|
|
|
Imgproc.rectangle(img, new Point(10, 20), new Point(20, 30), new Scalar(100), 3, Imgproc.LINE_AA, 0);
|
|
Imgproc.rectangle(img, new Point(30, 35), new Point(40, 45), new Scalar(200));
|
|
|
|
Imgproc.findContours(img, contours, hierarchy, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE);
|
|
Imgproc.findContours(img2, contours2, hierarchy, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE, new Point(3, 5));
|
|
|
|
assertEquals(contours.size(), contours2.size());
|
|
assertMatEqual(contours.get(0), contours2.get(0));
|
|
/*
|
|
Log.d("findContours", "hierarchy=" + hierarchy);
|
|
int iBuff[] = new int[ (int) (hierarchy.total() * hierarchy.channels()) ]; // [ Contour0 (next sibling num, previous sibling num, 1st child num, parent num), Contour1(...), ...
|
|
hierarchy.get(0, 0, iBuff);
|
|
Log.d("findContours", Arrays.toString(iBuff));
|
|
*/
|
|
}
|
|
|
|
public void testFitEllipse() {
|
|
MatOfPoint2f points = new MatOfPoint2f(new Point(0, 0), new Point(-1, 1), new Point(1, 1), new Point(1, -1), new Point(-1, -1));
|
|
RotatedRect rrect = new RotatedRect();
|
|
|
|
rrect = Imgproc.fitEllipse(points);
|
|
|
|
assertPointEquals(new Point(0, 0), rrect.center, EPS);
|
|
assertEquals(2.828, rrect.size.width, EPS);
|
|
assertEquals(2.828, rrect.size.height, EPS);
|
|
}
|
|
|
|
public void testFitLine() {
|
|
Mat points = new Mat(1, 4, CvType.CV_32FC2);
|
|
points.put(0, 0, 0, 0, 2, 3, 3, 4, 5, 8);
|
|
|
|
Mat linePoints = new Mat(4, 1, CvType.CV_32FC1);
|
|
linePoints.put(0, 0, 0.53198653, 0.84675282, 2.5, 3.75);
|
|
|
|
Imgproc.fitLine(points, dst, Imgproc.CV_DIST_L12, 0, 0.01, 0.01);
|
|
|
|
assertMatEqual(linePoints, dst, EPS);
|
|
}
|
|
|
|
public void testFloodFillMatMatPointScalar() {
|
|
Mat mask = new Mat(matSize + 2, matSize + 2, CvType.CV_8U, new Scalar(0));
|
|
Mat img = gray0;
|
|
Imgproc.circle(mask, new Point(matSize / 2 + 1, matSize / 2 + 1), 3, new Scalar(2));
|
|
|
|
int retval = Imgproc.floodFill(img, mask, new Point(matSize / 2, matSize / 2), new Scalar(1));
|
|
|
|
assertEquals(Core.countNonZero(img), retval);
|
|
Imgproc.circle(mask, new Point(matSize / 2 + 1, matSize / 2 + 1), 3, new Scalar(0));
|
|
assertEquals(retval + 4 * (matSize + 1), Core.countNonZero(mask));
|
|
assertMatEqual(mask.submat(1, matSize + 1, 1, matSize + 1), img);
|
|
}
|
|
|
|
public void testFloodFillMatMatPointScalar_WithoutMask() {
|
|
Mat img = gray0;
|
|
Imgproc.circle(img, new Point(matSize / 2, matSize / 2), 3, new Scalar(2));
|
|
|
|
// TODO: ideally we should pass null instead of "new Mat()"
|
|
int retval = Imgproc.floodFill(img, new Mat(), new Point(matSize / 2, matSize / 2), new Scalar(1));
|
|
|
|
Imgproc.circle(img, new Point(matSize / 2, matSize / 2), 3, new Scalar(0));
|
|
assertEquals(Core.countNonZero(img), retval);
|
|
}
|
|
|
|
public void testFloodFillMatMatPointScalarRect() {
|
|
fail("Not yet implemented");
|
|
}
|
|
|
|
public void testFloodFillMatMatPointScalarRectScalar() {
|
|
fail("Not yet implemented");
|
|
}
|
|
|
|
public void testFloodFillMatMatPointScalarRectScalarScalar() {
|
|
fail("Not yet implemented");
|
|
}
|
|
|
|
public void testFloodFillMatMatPointScalarRectScalarScalarInt() {
|
|
fail("Not yet implemented");
|
|
}
|
|
|
|
public void testGaussianBlurMatMatSizeDouble() {
|
|
Imgproc.GaussianBlur(gray0, dst, size, 1);
|
|
assertMatEqual(gray0, dst);
|
|
|
|
Imgproc.GaussianBlur(gray2, dst, size, 1);
|
|
assertMatEqual(gray2, dst);
|
|
}
|
|
|
|
public void testGaussianBlurMatMatSizeDoubleDouble() {
|
|
Imgproc.GaussianBlur(gray2, dst, size, 0, 0);
|
|
|
|
assertMatEqual(gray2, dst);
|
|
// TODO_: write better test
|
|
}
|
|
|
|
public void testGaussianBlurMatMatSizeDoubleDoubleInt() {
|
|
Imgproc.GaussianBlur(gray2, dst, size, 1, 3, Core.BORDER_REFLECT);
|
|
|
|
assertMatEqual(gray2, dst);
|
|
// TODO_: write better test
|
|
}
|
|
|
|
public void testGetAffineTransform() {
|
|
MatOfPoint2f src = new MatOfPoint2f(new Point(2, 3), new Point(3, 1), new Point(1, 4));
|
|
MatOfPoint2f dst = new MatOfPoint2f(new Point(3, 3), new Point(7, 4), new Point(5, 6));
|
|
|
|
Mat transform = Imgproc.getAffineTransform(src, dst);
|
|
|
|
Mat truth = new Mat(2, 3, CvType.CV_64FC1) {
|
|
{
|
|
put(0, 0, -8, -6, 37);
|
|
put(1, 0, -7, -4, 29);
|
|
}
|
|
};
|
|
assertMatEqual(truth, transform, EPS);
|
|
}
|
|
|
|
public void testGetDefaultNewCameraMatrixMat() {
|
|
Mat mtx = Imgproc.getDefaultNewCameraMatrix(gray0);
|
|
|
|
assertFalse(mtx.empty());
|
|
assertEquals(0, Core.countNonZero(mtx));
|
|
}
|
|
|
|
public void testGetDefaultNewCameraMatrixMatSizeBoolean() {
|
|
Mat mtx = Imgproc.getDefaultNewCameraMatrix(gray0, size, true);
|
|
|
|
assertFalse(mtx.empty());
|
|
assertFalse(0 == Core.countNonZero(mtx));
|
|
// TODO_: write better test
|
|
}
|
|
|
|
public void testGetDerivKernelsMatMatIntIntInt() {
|
|
Mat kx = new Mat(imgprocSz, imgprocSz, CvType.CV_32F);
|
|
Mat ky = new Mat(imgprocSz, imgprocSz, CvType.CV_32F);
|
|
Mat expKx = new Mat(3, 1, CvType.CV_32F);
|
|
Mat expKy = new Mat(3, 1, CvType.CV_32F);
|
|
kx.put(0, 0, 1, 1);
|
|
kx.put(1, 0, 1, 1);
|
|
ky.put(0, 0, 2, 2);
|
|
ky.put(1, 0, 2, 2);
|
|
expKx.put(0, 0, 1, -2, 1);
|
|
expKy.put(0, 0, 1, -2, 1);
|
|
|
|
Imgproc.getDerivKernels(kx, ky, 2, 2, 3);
|
|
|
|
assertMatEqual(expKx, kx, EPS);
|
|
assertMatEqual(expKy, ky, EPS);
|
|
}
|
|
|
|
public void testGetDerivKernelsMatMatIntIntIntBooleanInt() {
|
|
Mat kx = new Mat(imgprocSz, imgprocSz, CvType.CV_32F);
|
|
Mat ky = new Mat(imgprocSz, imgprocSz, CvType.CV_32F);
|
|
Mat expKx = new Mat(3, 1, CvType.CV_32F);
|
|
Mat expKy = new Mat(3, 1, CvType.CV_32F);
|
|
kx.put(0, 0, 1, 1);
|
|
kx.put(1, 0, 1, 1);
|
|
ky.put(0, 0, 2, 2);
|
|
ky.put(1, 0, 2, 2);
|
|
expKx.put(0, 0, 1, -2, 1);
|
|
expKy.put(0, 0, 1, -2, 1);
|
|
|
|
Imgproc.getDerivKernels(kx, ky, 2, 2, 3, true, CvType.CV_32F);
|
|
|
|
assertMatEqual(expKx, kx, EPS);
|
|
assertMatEqual(expKy, ky, EPS);
|
|
// TODO_: write better test
|
|
}
|
|
|
|
public void testGetGaussianKernelIntDouble() {
|
|
dst = Imgproc.getGaussianKernel(1, 0.5);
|
|
|
|
truth = new Mat(1, 1, CvType.CV_64FC1, new Scalar(1));
|
|
assertMatEqual(truth, dst, EPS);
|
|
}
|
|
|
|
public void testGetGaussianKernelIntDoubleInt() {
|
|
dst = Imgproc.getGaussianKernel(3, 0.8, CvType.CV_32F);
|
|
|
|
truth = new Mat(3, 1, CvType.CV_32F);
|
|
truth.put(0, 0, 0.23899426, 0.52201146, 0.23899426);
|
|
assertMatEqual(truth, dst, EPS);
|
|
}
|
|
|
|
public void testGetPerspectiveTransform() {
|
|
fail("Not yet implemented");
|
|
}
|
|
|
|
public void testGetRectSubPixMatSizePointMat() {
|
|
Size size = new Size(3, 3);
|
|
Point center = new Point(gray255.cols() / 2, gray255.rows() / 2);
|
|
|
|
Imgproc.getRectSubPix(gray255, size, center, dst);
|
|
|
|
truth = new Mat(3, 3, CvType.CV_8U, new Scalar(255));
|
|
assertMatEqual(truth, dst);
|
|
}
|
|
|
|
public void testGetRectSubPixMatSizePointMatInt() {
|
|
Mat src = new Mat(10, 10, CvType.CV_32F, new Scalar(2));
|
|
Size patchSize = new Size(5, 5);
|
|
Point center = new Point(src.cols() / 2, src.rows() / 2);
|
|
|
|
Imgproc.getRectSubPix(src, patchSize, center, dst);
|
|
|
|
truth = new Mat(5, 5, CvType.CV_32F, new Scalar(2));
|
|
assertMatEqual(truth, dst, EPS);
|
|
}
|
|
|
|
public void testGetRotationMatrix2D() {
|
|
Point center = new Point(0, 0);
|
|
|
|
dst = Imgproc.getRotationMatrix2D(center, 0, 1);
|
|
|
|
truth = new Mat(2, 3, CvType.CV_64F) {
|
|
{
|
|
put(0, 0, 1, 0, 0);
|
|
put(1, 0, 0, 1, 0);
|
|
}
|
|
};
|
|
|
|
assertMatEqual(truth, dst, EPS);
|
|
}
|
|
|
|
public void testGetStructuringElementIntSize() {
|
|
dst = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, size);
|
|
|
|
truth = new Mat(3, 3, CvType.CV_8UC1, new Scalar(1));
|
|
assertMatEqual(truth, dst);
|
|
}
|
|
|
|
public void testGetStructuringElementIntSizePoint() {
|
|
dst = Imgproc.getStructuringElement(Imgproc.MORPH_CROSS, size, anchorPoint);
|
|
|
|
truth = new Mat(3, 3, CvType.CV_8UC1) {
|
|
{
|
|
put(0, 0, 0, 0, 1);
|
|
put(1, 0, 0, 0, 1);
|
|
put(2, 0, 1, 1, 1);
|
|
}
|
|
};
|
|
assertMatEqual(truth, dst);
|
|
}
|
|
|
|
public void testGoodFeaturesToTrackMatListOfPointIntDoubleDouble() {
|
|
Mat src = gray0;
|
|
Imgproc.rectangle(src, new Point(2, 2), new Point(8, 8), new Scalar(100), -1);
|
|
MatOfPoint lp = new MatOfPoint();
|
|
|
|
Imgproc.goodFeaturesToTrack(src, lp, 100, 0.01, 3);
|
|
|
|
assertEquals(4, lp.total());
|
|
}
|
|
|
|
public void testGoodFeaturesToTrackMatListOfPointIntDoubleDoubleMatIntBooleanDouble() {
|
|
Mat src = gray0;
|
|
Imgproc.rectangle(src, new Point(2, 2), new Point(8, 8), new Scalar(100), -1);
|
|
MatOfPoint lp = new MatOfPoint();
|
|
|
|
Imgproc.goodFeaturesToTrack(src, lp, 100, 0.01, 3, gray1, 4, 3, true, 0);
|
|
|
|
assertEquals(4, lp.total());
|
|
}
|
|
|
|
public void testGrabCutMatMatRectMatMatInt() {
|
|
fail("Not yet implemented");
|
|
}
|
|
|
|
public void testGrabCutMatMatRectMatMatIntInt() {
|
|
fail("Not yet implemented");
|
|
}
|
|
|
|
public void testHoughCirclesMatMatIntDoubleDouble() {
|
|
int sz = 512;
|
|
Mat img = new Mat(sz, sz, CvType.CV_8U, new Scalar(128));
|
|
Mat circles = new Mat();
|
|
|
|
Imgproc.HoughCircles(img, circles, Imgproc.CV_HOUGH_GRADIENT, 2, img.rows() / 4);
|
|
|
|
assertEquals(0, circles.cols());
|
|
}
|
|
|
|
public void testHoughCirclesMatMatIntDoubleDouble1() {
|
|
int sz = 512;
|
|
Mat img = new Mat(sz, sz, CvType.CV_8U, new Scalar(128));
|
|
Mat circles = new Mat();
|
|
|
|
Point center = new Point(img.cols() / 2, img.rows() / 2);
|
|
int radius = Math.min(img.cols() / 4, img.rows() / 4);
|
|
Imgproc.circle(img, center, radius, colorBlack, 3);
|
|
|
|
Imgproc.HoughCircles(img, circles, Imgproc.CV_HOUGH_GRADIENT, 2, img.rows() / 4);
|
|
|
|
assertEquals(1, circles.cols());
|
|
}
|
|
|
|
public void testHoughCirclesMatMatIntDoubleDoubleDoubleDoubleIntInt() {
|
|
fail("Not yet implemented");
|
|
}
|
|
|
|
public void testHoughLinesMatMatDoubleDoubleInt() {
|
|
int sz = 512;
|
|
Mat img = new Mat(sz, sz, CvType.CV_8U, new Scalar(0));
|
|
Point point1 = new Point(50, 50);
|
|
Point point2 = new Point(img.cols() / 2, img.rows() / 2);
|
|
Imgproc.line(img, point1, point2, colorWhite, 1);
|
|
Mat lines = new Mat();
|
|
|
|
Imgproc.HoughLines(img, lines, 1, 3.1415926/180, 100);
|
|
|
|
assertEquals(1, lines.cols());
|
|
|
|
/*
|
|
Log.d("HoughLines", "lines=" + lines);
|
|
int num = (int)lines.total();
|
|
int buff[] = new int[num*4]; //[ (x1, y1, x2, y2), (...), ...]
|
|
lines.get(0, 0, buff);
|
|
Log.d("HoughLines", "lines=" + Arrays.toString(buff));
|
|
*/
|
|
}
|
|
|
|
public void testHoughLinesMatMatDoubleDoubleIntDouble() {
|
|
fail("Not yet implemented");
|
|
}
|
|
|
|
public void testHoughLinesMatMatDoubleDoubleIntDoubleDouble() {
|
|
fail("Not yet implemented");
|
|
}
|
|
|
|
public void testHoughLinesPMatMatDoubleDoubleInt() {
|
|
int sz = 512;
|
|
Mat img = new Mat(sz, sz, CvType.CV_8U, new Scalar(0));
|
|
Point point1 = new Point(0, 0);
|
|
Point point2 = new Point(sz, sz);
|
|
Point point3 = new Point(sz, 0);
|
|
Point point4 = new Point(2*sz/3, sz/3);
|
|
Imgproc.line(img, point1, point2, Scalar.all(255), 1);
|
|
Imgproc.line(img, point3, point4, Scalar.all(255), 1);
|
|
Mat lines = new Mat();
|
|
|
|
Imgproc.HoughLinesP(img, lines, 1, 3.1415926/180, 100);
|
|
|
|
assertEquals(2, lines.rows());
|
|
|
|
/*
|
|
Log.d("HoughLinesP", "lines=" + lines);
|
|
int num = (int)lines.cols();
|
|
int buff[] = new int[num*4]; // CV_32SC4 as [ (x1, y1, x2, y2), (...), ...]
|
|
lines.get(0, 0, buff);
|
|
Log.d("HoughLinesP", "lines=" + Arrays.toString(buff));
|
|
*/
|
|
}
|
|
|
|
public void testHoughLinesPMatMatDoubleDoubleIntDouble() {
|
|
fail("Not yet implemented");
|
|
}
|
|
|
|
public void testHoughLinesPMatMatDoubleDoubleIntDoubleDouble() {
|
|
fail("Not yet implemented");
|
|
}
|
|
|
|
public void testHuMoments() {
|
|
fail("Not yet implemented");
|
|
}
|
|
|
|
public void testInitUndistortRectifyMap() {
|
|
fail("Not yet implemented");
|
|
Mat cameraMatrix = new Mat(3, 3, CvType.CV_32F);
|
|
cameraMatrix.put(0, 0, 1, 0, 1);
|
|
cameraMatrix.put(1, 0, 0, 1, 1);
|
|
cameraMatrix.put(2, 0, 0, 0, 1);
|
|
|
|
Mat R = new Mat(3, 3, CvType.CV_32F, new Scalar(2));
|
|
Mat newCameraMatrix = new Mat(3, 3, CvType.CV_32F, new Scalar(3));
|
|
|
|
Mat distCoeffs = new Mat();
|
|
Mat map1 = new Mat();
|
|
Mat map2 = new Mat();
|
|
|
|
// TODO: complete this test
|
|
Imgproc.initUndistortRectifyMap(cameraMatrix, distCoeffs, R, newCameraMatrix, size, CvType.CV_32F, map1, map2);
|
|
}
|
|
|
|
public void testInitWideAngleProjMapMatMatSizeIntIntMatMat() {
|
|
fail("Not yet implemented");
|
|
Mat cameraMatrix = new Mat(3, 3, CvType.CV_32F);
|
|
Mat distCoeffs = new Mat(1, 4, CvType.CV_32F);
|
|
// Size imageSize = new Size(2, 2);
|
|
|
|
cameraMatrix.put(0, 0, 1, 0, 1);
|
|
cameraMatrix.put(1, 0, 0, 1, 2);
|
|
cameraMatrix.put(2, 0, 0, 0, 1);
|
|
|
|
distCoeffs.put(0, 0, 1, 3, 2, 4);
|
|
truth = new Mat(3, 3, CvType.CV_32F);
|
|
truth.put(0, 0, 0, 0, 0);
|
|
truth.put(1, 0, 0, 0, 0);
|
|
truth.put(2, 0, 0, 3, 0);
|
|
// TODO: No documentation for this function
|
|
// Imgproc.initWideAngleProjMap(cameraMatrix, distCoeffs, imageSize,
|
|
// 5, m1type, truthput1, truthput2);
|
|
}
|
|
|
|
public void testInitWideAngleProjMapMatMatSizeIntIntMatMatInt() {
|
|
fail("Not yet implemented");
|
|
}
|
|
|
|
public void testInitWideAngleProjMapMatMatSizeIntIntMatMatIntDouble() {
|
|
fail("Not yet implemented");
|
|
}
|
|
|
|
public void testIntegral2MatMatMat() {
|
|
Mat src = new Mat(3, 3, CvType.CV_32F, new Scalar(3));
|
|
Mat expSum = new Mat(4, 4, CvType.CV_64F);
|
|
Mat expSqsum = new Mat(4, 4, CvType.CV_64F);
|
|
Mat sum = new Mat();
|
|
Mat sqsum = new Mat();
|
|
|
|
expSum.put(0, 0, 0, 0, 0, 0);
|
|
expSum.put(1, 0, 0, 3, 6, 9);
|
|
expSum.put(2, 0, 0, 6, 12, 18);
|
|
expSum.put(3, 0, 0, 9, 18, 27);
|
|
|
|
expSqsum.put(0, 0, 0, 0, 0, 0);
|
|
expSqsum.put(1, 0, 0, 9, 18, 27);
|
|
expSqsum.put(2, 0, 0, 18, 36, 54);
|
|
expSqsum.put(3, 0, 0, 27, 54, 81);
|
|
|
|
Imgproc.integral2(src, sum, sqsum);
|
|
|
|
assertMatEqual(expSum, sum, EPS);
|
|
assertMatEqual(expSqsum, sqsum, EPS);
|
|
}
|
|
|
|
public void testIntegral2MatMatMatInt() {
|
|
Mat src = new Mat(3, 3, CvType.CV_32F, new Scalar(3));
|
|
Mat expSum = new Mat(4, 4, CvType.CV_64F);
|
|
Mat expSqsum = new Mat(4, 4, CvType.CV_64F);
|
|
Mat sum = new Mat();
|
|
Mat sqsum = new Mat();
|
|
|
|
expSum.put(0, 0, 0, 0, 0, 0);
|
|
expSum.put(1, 0, 0, 3, 6, 9);
|
|
expSum.put(2, 0, 0, 6, 12, 18);
|
|
expSum.put(3, 0, 0, 9, 18, 27);
|
|
|
|
expSqsum.put(0, 0, 0, 0, 0, 0);
|
|
expSqsum.put(1, 0, 0, 9, 18, 27);
|
|
expSqsum.put(2, 0, 0, 18, 36, 54);
|
|
expSqsum.put(3, 0, 0, 27, 54, 81);
|
|
|
|
Imgproc.integral2(src, sum, sqsum, CvType.CV_64F, CvType.CV_64F);
|
|
|
|
assertMatEqual(expSum, sum, EPS);
|
|
assertMatEqual(expSqsum, sqsum, EPS);
|
|
}
|
|
|
|
public void testIntegral3MatMatMatMat() {
|
|
Mat src = new Mat(1, 1, CvType.CV_32F, new Scalar(1));
|
|
Mat expSum = new Mat(imgprocSz, imgprocSz, CvType.CV_64F);
|
|
Mat expSqsum = new Mat(imgprocSz, imgprocSz, CvType.CV_64F);
|
|
Mat expTilted = new Mat(imgprocSz, imgprocSz, CvType.CV_64F);
|
|
Mat sum = new Mat();
|
|
Mat sqsum = new Mat();
|
|
Mat tilted = new Mat();
|
|
|
|
expSum.put(0, 0, 0, 0);
|
|
expSum.put(1, 0, 0, 1);
|
|
|
|
expSqsum.put(0, 0, 0, 0);
|
|
expSqsum.put(1, 0, 0, 1);
|
|
|
|
expTilted.put(0, 0, 0, 0);
|
|
expTilted.put(1, 0, 0, 1);
|
|
|
|
Imgproc.integral3(src, sum, sqsum, tilted);
|
|
|
|
assertMatEqual(expSum, sum, EPS);
|
|
assertMatEqual(expSqsum, sqsum, EPS);
|
|
assertMatEqual(expTilted, tilted, EPS);
|
|
}
|
|
|
|
public void testIntegral3MatMatMatMatInt() {
|
|
Mat src = new Mat(1, 1, CvType.CV_32F, new Scalar(1));
|
|
Mat expSum = new Mat(imgprocSz, imgprocSz, CvType.CV_64F);
|
|
Mat expSqsum = new Mat(imgprocSz, imgprocSz, CvType.CV_64F);
|
|
Mat expTilted = new Mat(imgprocSz, imgprocSz, CvType.CV_64F);
|
|
Mat sum = new Mat();
|
|
Mat sqsum = new Mat();
|
|
Mat tilted = new Mat();
|
|
|
|
expSum.put(0, 0, 0, 0);
|
|
expSum.put(1, 0, 0, 1);
|
|
|
|
expSqsum.put(0, 0, 0, 0);
|
|
expSqsum.put(1, 0, 0, 1);
|
|
|
|
expTilted.put(0, 0, 0, 0);
|
|
expTilted.put(1, 0, 0, 1);
|
|
|
|
Imgproc.integral3(src, sum, sqsum, tilted, CvType.CV_64F, CvType.CV_64F);
|
|
|
|
assertMatEqual(expSum, sum, EPS);
|
|
assertMatEqual(expSqsum, sqsum, EPS);
|
|
assertMatEqual(expTilted, tilted, EPS);
|
|
}
|
|
|
|
public void testIntegralMatMat() {
|
|
Mat src = new Mat(imgprocSz, imgprocSz, CvType.CV_32F, new Scalar(2));
|
|
|
|
Imgproc.integral(src, dst);
|
|
|
|
truth = new Mat(3, 3, CvType.CV_64F) {
|
|
{
|
|
put(0, 0, 0, 0, 0);
|
|
put(1, 0, 0, 2, 4);
|
|
put(2, 0, 0, 4, 8);
|
|
}
|
|
};
|
|
assertMatEqual(truth, dst, EPS);
|
|
}
|
|
|
|
public void testIntegralMatMatInt() {
|
|
Mat src = new Mat(imgprocSz, imgprocSz, CvType.CV_32F, new Scalar(2));
|
|
|
|
Imgproc.integral(src, dst, CvType.CV_64F);
|
|
|
|
truth = new Mat(3, 3, CvType.CV_64F) {
|
|
{
|
|
put(0, 0, 0, 0, 0);
|
|
put(1, 0, 0, 2, 4);
|
|
put(2, 0, 0, 4, 8);
|
|
}
|
|
};
|
|
assertMatEqual(truth, dst, EPS);
|
|
}
|
|
|
|
public void testInvertAffineTransform() {
|
|
Mat src = new Mat(2, 3, CvType.CV_64F, new Scalar(1));
|
|
|
|
Imgproc.invertAffineTransform(src, dst);
|
|
|
|
truth = new Mat(2, 3, CvType.CV_64F, new Scalar(0));
|
|
assertMatEqual(truth, dst, EPS);
|
|
}
|
|
|
|
public void testIsContourConvex() {
|
|
MatOfPoint contour1 = new MatOfPoint(new Point(0, 0), new Point(10, 0), new Point(10, 10), new Point(5, 4));
|
|
|
|
assertFalse(Imgproc.isContourConvex(contour1));
|
|
|
|
MatOfPoint contour2 = new MatOfPoint(new Point(0, 0), new Point(10, 0), new Point(10, 10), new Point(5, 6));
|
|
|
|
assertTrue(Imgproc.isContourConvex(contour2));
|
|
}
|
|
|
|
public void testLaplacianMatMatInt() {
|
|
Imgproc.Laplacian(gray0, dst, CvType.CV_8U);
|
|
|
|
assertMatEqual(gray0, dst);
|
|
}
|
|
|
|
public void testLaplacianMatMatIntIntDoubleDouble() {
|
|
Mat src = Mat.eye(imgprocSz, imgprocSz, CvType.CV_32F);
|
|
|
|
Imgproc.Laplacian(src, dst, CvType.CV_32F, 1, 2, EPS);
|
|
|
|
truth = new Mat(imgprocSz, imgprocSz, CvType.CV_32F) {
|
|
{
|
|
put(0, 0, -7.9990001, 8.0009995);
|
|
put(1, 0, 8.0009995, -7.9990001);
|
|
}
|
|
};
|
|
assertMatEqual(truth, dst, EPS);
|
|
}
|
|
|
|
public void testLaplacianMatMatIntIntDoubleDoubleInt() {
|
|
Mat src = new Mat(3, 3, CvType.CV_32F, new Scalar(2));
|
|
|
|
Imgproc.Laplacian(src, dst, CvType.CV_32F, 1, 2, EPS, Core.BORDER_REFLECT);
|
|
|
|
truth = new Mat(3, 3, CvType.CV_32F, new Scalar(0.00099945068));
|
|
assertMatEqual(truth, dst, EPS);
|
|
}
|
|
|
|
public void testMatchShapes() {
|
|
Mat contour1 = new Mat(1, 4, CvType.CV_32FC2);
|
|
Mat contour2 = new Mat(1, 4, CvType.CV_32FC2);
|
|
contour1.put(0, 0, 1, 1, 5, 1, 4, 3, 6, 2);
|
|
contour2.put(0, 0, 1, 1, 6, 1, 4, 1, 2, 5);
|
|
|
|
double distance = Imgproc.matchShapes(contour1, contour2, Imgproc.CV_CONTOURS_MATCH_I1, 1);
|
|
|
|
assertEquals(2.81109697365334, distance, EPS);
|
|
}
|
|
|
|
public void testMatchTemplate() {
|
|
Mat image = new Mat(imgprocSz, imgprocSz, CvType.CV_8U);
|
|
Mat templ = new Mat(imgprocSz, imgprocSz, CvType.CV_8U);
|
|
image.put(0, 0, 1, 2, 3, 4);
|
|
templ.put(0, 0, 5, 6, 7, 8);
|
|
|
|
Imgproc.matchTemplate(image, templ, dst, Imgproc.TM_CCORR);
|
|
|
|
truth = new Mat(1, 1, CvType.CV_32F, new Scalar(70));
|
|
assertMatEqual(truth, dst, EPS);
|
|
|
|
Imgproc.matchTemplate(gray255, gray0, dst, Imgproc.TM_CCORR);
|
|
|
|
truth = new Mat(1, 1, CvType.CV_32F, new Scalar(0));
|
|
assertMatEqual(truth, dst, EPS);
|
|
}
|
|
|
|
public void testMedianBlur() {
|
|
Imgproc.medianBlur(gray255, dst, 5);
|
|
assertMatEqual(gray255, dst);
|
|
|
|
Imgproc.medianBlur(gray2, dst, 3);
|
|
assertMatEqual(gray2, dst);
|
|
// TODO_: write better test
|
|
}
|
|
|
|
public void testMinAreaRect() {
|
|
MatOfPoint2f points = new MatOfPoint2f(new Point(1, 1), new Point(5, 1), new Point(4, 3), new Point(6, 2));
|
|
|
|
RotatedRect rrect = Imgproc.minAreaRect(points);
|
|
|
|
assertEquals(new Size(2, 5), rrect.size);
|
|
assertEquals(-90., rrect.angle);
|
|
assertEquals(new Point(3.5, 2), rrect.center);
|
|
}
|
|
|
|
public void testMinEnclosingCircle() {
|
|
MatOfPoint2f points = new MatOfPoint2f(new Point(0, 0), new Point(-100, 0), new Point(0, -100), new Point(100, 0), new Point(0, 100));
|
|
Point actualCenter = new Point();
|
|
float[] radius = new float[1];
|
|
|
|
Imgproc.minEnclosingCircle(points, actualCenter, radius);
|
|
|
|
assertEquals(new Point(0, 0), actualCenter);
|
|
assertEquals(100.0f, radius[0], 1.0);
|
|
}
|
|
|
|
public void testMomentsMat() {
|
|
fail("Not yet implemented");
|
|
}
|
|
|
|
public void testMomentsMatBoolean() {
|
|
fail("Not yet implemented");
|
|
}
|
|
|
|
public void testMorphologyExMatMatIntMat() {
|
|
Imgproc.morphologyEx(gray255, dst, Imgproc.MORPH_GRADIENT, gray0);
|
|
|
|
assertMatEqual(gray0, dst);
|
|
// TODO_: write better test
|
|
}
|
|
|
|
public void testMorphologyExMatMatIntMatPointInt() {
|
|
Mat src = Mat.eye(imgprocSz, imgprocSz, CvType.CV_8U);
|
|
|
|
Mat kernel = new Mat(imgprocSz, imgprocSz, CvType.CV_8U, new Scalar(0));
|
|
Point point = new Point(0, 0);
|
|
|
|
Imgproc.morphologyEx(src, dst, Imgproc.MORPH_CLOSE, kernel, point, 10);
|
|
|
|
truth = Mat.eye(imgprocSz, imgprocSz, CvType.CV_8U);
|
|
assertMatEqual(truth, dst);
|
|
// TODO_: write better test
|
|
}
|
|
|
|
|
|
public void testMorphologyExMatMatIntMatPointIntIntScalar() {
|
|
Mat src = new Mat(imgprocSz, imgprocSz, CvType.CV_8U);
|
|
src.put(0, 0, 2, 1);
|
|
src.put(1, 0, 2, 1);
|
|
|
|
Mat kernel = new Mat(imgprocSz, imgprocSz, CvType.CV_8U, new Scalar(1));
|
|
Point point = new Point(1, 1);
|
|
Scalar sc = new Scalar(3, 3);
|
|
|
|
Imgproc.morphologyEx(src, dst, Imgproc.MORPH_TOPHAT, kernel, point, 10, Core.BORDER_REFLECT, sc);
|
|
truth = new Mat(imgprocSz, imgprocSz, CvType.CV_8U) {
|
|
{
|
|
put(0, 0, 1, 0);
|
|
put(1, 0, 1, 0);
|
|
}
|
|
};
|
|
assertMatEqual(truth, dst);
|
|
// TODO_: write better test
|
|
}
|
|
|
|
public void testPointPolygonTest() {
|
|
MatOfPoint2f contour = new MatOfPoint2f(new Point(0, 0), new Point(1, 3), new Point(3, 4), new Point(4, 3), new Point(2, 1));
|
|
double sign1 = Imgproc.pointPolygonTest(contour, new Point(2, 2), false);
|
|
assertEquals(1.0, sign1);
|
|
|
|
double sign2 = Imgproc.pointPolygonTest(contour, new Point(4, 4), true);
|
|
assertEquals(-Math.sqrt(0.5), sign2);
|
|
}
|
|
|
|
public void testPreCornerDetectMatMatInt() {
|
|
Mat src = new Mat(4, 4, CvType.CV_32F, new Scalar(1));
|
|
int ksize = 3;
|
|
|
|
Imgproc.preCornerDetect(src, dst, ksize);
|
|
|
|
truth = new Mat(4, 4, CvType.CV_32F, new Scalar(0));
|
|
assertMatEqual(truth, dst, EPS);
|
|
}
|
|
|
|
public void testPreCornerDetectMatMatIntInt() {
|
|
Mat src = new Mat(4, 4, CvType.CV_32F, new Scalar(1));
|
|
int ksize = 3;
|
|
|
|
Imgproc.preCornerDetect(src, dst, ksize, Core.BORDER_REFLECT);
|
|
|
|
truth = new Mat(4, 4, CvType.CV_32F, new Scalar(0));
|
|
assertMatEqual(truth, dst, EPS);
|
|
// TODO_: write better test
|
|
}
|
|
|
|
public void testPyrDownMatMat() {
|
|
Mat src = new Mat(4, 4, CvType.CV_32F) {
|
|
{
|
|
put(0, 0, 2, 1, 4, 2);
|
|
put(1, 0, 3, 2, 6, 8);
|
|
put(2, 0, 4, 6, 8, 10);
|
|
put(3, 0, 12, 32, 6, 18);
|
|
}
|
|
};
|
|
|
|
Imgproc.pyrDown(src, dst);
|
|
|
|
truth = new Mat(imgprocSz, imgprocSz, CvType.CV_32F) {
|
|
{
|
|
put(0, 0, 2.78125, 4.609375);
|
|
put(1, 0, 8.546875, 8.8515625);
|
|
}
|
|
};
|
|
assertMatEqual(truth, dst, EPS);
|
|
}
|
|
|
|
public void testPyrDownMatMatSize() {
|
|
Mat src = new Mat(4, 4, CvType.CV_32F) {
|
|
{
|
|
put(0, 0, 2, 1, 4, 2);
|
|
put(1, 0, 3, 2, 6, 8);
|
|
put(2, 0, 4, 6, 8, 10);
|
|
put(3, 0, 12, 32, 6, 18);
|
|
}
|
|
};
|
|
Size dstSize = new Size(2, 2);
|
|
|
|
Imgproc.pyrDown(src, dst, dstSize);
|
|
|
|
truth = new Mat(imgprocSz, imgprocSz, CvType.CV_32F) {
|
|
{
|
|
put(0, 0, 2.78125, 4.609375);
|
|
put(1, 0, 8.546875, 8.8515625);
|
|
}
|
|
};
|
|
assertMatEqual(truth, dst, EPS);
|
|
// TODO_: write better test
|
|
}
|
|
|
|
public void testPyrMeanShiftFilteringMatMatDoubleDouble() {
|
|
Mat src = new Mat(matSize, matSize, CvType.CV_8UC3, new Scalar(0));
|
|
|
|
Imgproc.pyrMeanShiftFiltering(src, dst, 10, 50);
|
|
|
|
assertMatEqual(src, dst);
|
|
// TODO_: write better test
|
|
}
|
|
|
|
public void testPyrMeanShiftFilteringMatMatDoubleDoubleInt() {
|
|
fail("Not yet implemented");
|
|
}
|
|
|
|
public void testPyrMeanShiftFilteringMatMatDoubleDoubleIntTermCriteria() {
|
|
fail("Not yet implemented");
|
|
}
|
|
|
|
public void testPyrUpMatMat() {
|
|
Mat src = new Mat(imgprocSz, imgprocSz, CvType.CV_32F);
|
|
src.put(0, 0, 2, 1);
|
|
src.put(1, 0, 3, 2);
|
|
|
|
Imgproc.pyrUp(src, dst);
|
|
|
|
truth = new Mat(4, 4, CvType.CV_32F) {
|
|
{
|
|
put(0, 0, 2, 1.75, 1.375, 1.25);
|
|
put(1, 0, 2.25, 2, 1.625, 1.5);
|
|
put(2, 0, 2.625, 2.375, 2, 1.875);
|
|
put(3, 0, 2.75, 2.5, 2.125, 2);
|
|
}
|
|
};
|
|
assertMatEqual(truth, dst, EPS);
|
|
}
|
|
|
|
public void testPyrUpMatMatSize() {
|
|
fail("Not yet implemented");
|
|
}
|
|
|
|
public void testRemapMatMatMatMatInt() {
|
|
fail("Not yet implemented");
|
|
// this test does something weird
|
|
Mat src = new Mat(imgprocSz, imgprocSz, CvType.CV_32F, new Scalar(2));
|
|
Mat map1 = new Mat(1, 3, CvType.CV_32FC1);
|
|
Mat map2 = new Mat(1, 3, CvType.CV_32FC1);
|
|
|
|
map1.put(0, 0, 3, 6, 5);
|
|
map2.put(0, 0, 4, 8, 12);
|
|
|
|
Imgproc.remap(src, dst, map1, map2, Imgproc.INTER_LINEAR);
|
|
|
|
truth = new Mat(1, 3, CvType.CV_32F, new Scalar(0));
|
|
assertMatEqual(truth, dst, EPS);
|
|
}
|
|
|
|
public void testRemapMatMatMatMatIntIntScalar() {
|
|
fail("Not yet implemented");
|
|
// this test does something weird
|
|
Mat src = new Mat(imgprocSz, imgprocSz, CvType.CV_32F, new Scalar(2));
|
|
Mat map1 = new Mat(1, 3, CvType.CV_32FC1);
|
|
Mat map2 = new Mat(1, 3, CvType.CV_32FC1);
|
|
|
|
Scalar sc = new Scalar(0);
|
|
|
|
map1.put(0, 0, 3, 6, 5, 0);
|
|
map2.put(0, 0, 4, 8, 12);
|
|
|
|
truth = new Mat(1, 3, CvType.CV_32F, new Scalar(2));
|
|
|
|
Imgproc.remap(src, dst, map1, map2, Imgproc.INTER_LINEAR, Core.BORDER_REFLECT, sc);
|
|
assertMatEqual(truth, dst, EPS);
|
|
}
|
|
|
|
public void testResizeMatMatSize() {
|
|
Mat src = new Mat(imgprocSz, imgprocSz, CvType.CV_8UC1, new Scalar(1));
|
|
Size dsize = new Size(1, 1);
|
|
|
|
Imgproc.resize(src, dst, dsize, 0, 0, Imgproc.INTER_LINEAR_EXACT);
|
|
|
|
truth = new Mat(1, 1, CvType.CV_8UC1, new Scalar(1));
|
|
assertMatEqual(truth, dst);
|
|
}
|
|
|
|
public void testResizeMatMatSizeDoubleDoubleInt() {
|
|
Imgproc.resize(gray255, dst, new Size(2, 2), 0, 0, Imgproc.INTER_AREA);
|
|
|
|
truth = new Mat(2, 2, CvType.CV_8UC1, new Scalar(255));
|
|
assertMatEqual(truth, dst);
|
|
// TODO_: write better test
|
|
}
|
|
|
|
public void testScharrMatMatIntIntInt() {
|
|
Mat src = Mat.eye(imgprocSz, imgprocSz, CvType.CV_32F);
|
|
|
|
Imgproc.Scharr(src, dst, CvType.CV_32F, 1, 0);
|
|
|
|
truth = new Mat(imgprocSz, imgprocSz, CvType.CV_32F, new Scalar(0));
|
|
assertMatEqual(truth, dst, EPS);
|
|
}
|
|
|
|
public void testScharrMatMatIntIntIntDoubleDouble() {
|
|
Mat src = Mat.eye(imgprocSz, imgprocSz, CvType.CV_32F);
|
|
|
|
Imgproc.Scharr(src, dst, CvType.CV_32F, 1, 0, 1.5, 0.001);
|
|
|
|
truth = new Mat(imgprocSz, imgprocSz, CvType.CV_32F, new Scalar(0.001));
|
|
assertMatEqual(truth, dst, EPS);
|
|
}
|
|
|
|
public void testScharrMatMatIntIntIntDoubleDoubleInt() {
|
|
Mat src = Mat.eye(3, 3, CvType.CV_32F);
|
|
|
|
Imgproc.Scharr(src, dst, CvType.CV_32F, 1, 0, 1.5, 0, Core.BORDER_REFLECT);
|
|
|
|
truth = new Mat(3, 3, CvType.CV_32F) {
|
|
{
|
|
put(0, 0, -15, -19.5, -4.5);
|
|
put(1, 0, 10.5, 0, -10.5);
|
|
put(2, 0, 4.5, 19.5, 15);
|
|
}
|
|
};
|
|
assertMatEqual(truth, dst, EPS);
|
|
}
|
|
|
|
public void testSepFilter2DMatMatIntMatMat() {
|
|
Mat src = new Mat(imgprocSz, imgprocSz, CvType.CV_32F, new Scalar(2));
|
|
Mat kernelX = new Mat(1, 3, CvType.CV_32FC1);
|
|
Mat kernelY = new Mat(1, 3, CvType.CV_32FC1);
|
|
kernelX.put(0, 0, 4, 3, 7);
|
|
kernelY.put(0, 0, 9, 4, 2);
|
|
|
|
Imgproc.sepFilter2D(src, dst, CvType.CV_32F, kernelX, kernelY);
|
|
|
|
truth = new Mat(imgprocSz, imgprocSz, CvType.CV_32F, new Scalar(420));
|
|
assertMatEqual(truth, dst, EPS);
|
|
}
|
|
|
|
public void testSepFilter2DMatMatIntMatMatPointDouble() {
|
|
Mat src = new Mat(imgprocSz, imgprocSz, CvType.CV_32FC1, new Scalar(2));
|
|
Mat kernelX = new Mat(1, 3, CvType.CV_32FC1);
|
|
kernelX.put(0, 0, 2, 2, 2);
|
|
Mat kernelY = new Mat(1, 3, CvType.CV_32FC1);
|
|
kernelY.put(0, 0, 1, 1, 1);
|
|
|
|
Imgproc.sepFilter2D(src, dst, CvType.CV_32F, kernelX, kernelY, anchorPoint, weakEPS);
|
|
|
|
truth = new Mat(imgprocSz, imgprocSz, CvType.CV_32F, new Scalar(36 + weakEPS));
|
|
assertMatEqual(truth, dst, EPS);
|
|
}
|
|
|
|
public void testSepFilter2DMatMatIntMatMatPointDoubleInt() {
|
|
Mat kernelX = new Mat(1, 3, CvType.CV_32FC1);
|
|
kernelX.put(0, 0, 2, 2, 2);
|
|
|
|
Mat kernelY = new Mat(1, 3, CvType.CV_32FC1);
|
|
kernelY.put(0, 0, 1, 1, 1);
|
|
|
|
Imgproc.sepFilter2D(gray0, dst, CvType.CV_32F, kernelX, kernelY, anchorPoint, weakEPS, Core.BORDER_REFLECT);
|
|
|
|
truth = new Mat(10, 10, CvType.CV_32F, new Scalar(weakEPS));
|
|
assertMatEqual(truth, dst, EPS);
|
|
// TODO_: write better test
|
|
}
|
|
|
|
public void testSobelMatMatIntIntInt() {
|
|
Imgproc.Sobel(gray255, dst, CvType.CV_8U, 1, 0);
|
|
|
|
assertMatEqual(gray0, dst);
|
|
}
|
|
|
|
public void testSobelMatMatIntIntIntIntDoubleDouble() {
|
|
Imgproc.Sobel(gray255, dst, CvType.CV_8U, 1, 0, 3, 2, 0.001);
|
|
assertMatEqual(gray0, dst);
|
|
// TODO_: write better test
|
|
}
|
|
|
|
public void testSobelMatMatIntIntIntIntDoubleDoubleInt() {
|
|
Mat src = new Mat(3, 3, CvType.CV_32F) {
|
|
{
|
|
put(0, 0, 2, 0, 1);
|
|
put(1, 0, 6, 4, 3);
|
|
put(2, 0, 1, 0, 2);
|
|
}
|
|
};
|
|
|
|
Imgproc.Sobel(src, dst, CvType.CV_32F, 1, 0, 3, 2, 0, Core.BORDER_REPLICATE);
|
|
|
|
truth = new Mat(3, 3, CvType.CV_32F) {
|
|
{
|
|
put(0, 0, -16, -12, 4);
|
|
put(1, 0, -14, -12, 2);
|
|
put(2, 0, -10, 0, 10);
|
|
}
|
|
};
|
|
assertMatEqual(truth, dst, EPS);
|
|
}
|
|
|
|
public void testThreshold() {
|
|
Imgproc.threshold(makeMask(gray0.clone(), 10), dst, 5, 255, Imgproc.THRESH_TRUNC);
|
|
assertMatEqual(makeMask(gray0.clone(), 5), dst);
|
|
|
|
Imgproc.threshold(makeMask(gray2.clone(), 10), dst, 1, 255, Imgproc.THRESH_BINARY);
|
|
assertMatEqual(gray255, dst);
|
|
|
|
Imgproc.threshold(makeMask(gray2.clone(), 10), dst, 3, 255, Imgproc.THRESH_BINARY_INV);
|
|
assertMatEqual(makeMask(gray255.clone(), 0), dst);
|
|
}
|
|
|
|
public void testUndistortMatMatMatMat() {
|
|
Mat src = new Mat(3, 3, CvType.CV_32F, new Scalar(3));
|
|
Mat cameraMatrix = new Mat(3, 3, CvType.CV_32F) {
|
|
{
|
|
put(0, 0, 1, 0, 1);
|
|
put(1, 0, 0, 1, 2);
|
|
put(2, 0, 0, 0, 1);
|
|
}
|
|
};
|
|
Mat distCoeffs = new Mat(1, 4, CvType.CV_32F) {
|
|
{
|
|
put(0, 0, 1, 3, 2, 4);
|
|
}
|
|
};
|
|
|
|
Imgproc.undistort(src, dst, cameraMatrix, distCoeffs);
|
|
|
|
truth = new Mat(3, 3, CvType.CV_32F) {
|
|
{
|
|
put(0, 0, 0, 0, 0);
|
|
put(1, 0, 0, 0, 0);
|
|
put(2, 0, 0, 3, 0);
|
|
}
|
|
};
|
|
assertMatEqual(truth, dst, EPS);
|
|
}
|
|
|
|
public void testUndistortMatMatMatMatMat() {
|
|
Mat src = new Mat(3, 3, CvType.CV_32F, new Scalar(3));
|
|
Mat cameraMatrix = new Mat(3, 3, CvType.CV_32F) {
|
|
{
|
|
put(0, 0, 1, 0, 1);
|
|
put(1, 0, 0, 1, 2);
|
|
put(2, 0, 0, 0, 1);
|
|
}
|
|
};
|
|
Mat distCoeffs = new Mat(1, 4, CvType.CV_32F) {
|
|
{
|
|
put(0, 0, 2, 1, 4, 5);
|
|
}
|
|
};
|
|
Mat newCameraMatrix = new Mat(3, 3, CvType.CV_32F, new Scalar(1));
|
|
|
|
Imgproc.undistort(src, dst, cameraMatrix, distCoeffs, newCameraMatrix);
|
|
|
|
truth = new Mat(3, 3, CvType.CV_32F, new Scalar(3));
|
|
assertMatEqual(truth, dst, EPS);
|
|
}
|
|
|
|
//undistortPoints(List<Point> src, List<Point> dst, Mat cameraMatrix, Mat distCoeffs)
|
|
public void testUndistortPointsListOfPointListOfPointMatMat() {
|
|
MatOfPoint2f src = new MatOfPoint2f(new Point(1, 2), new Point(3, 4), new Point(-1, -1));
|
|
MatOfPoint2f dst = new MatOfPoint2f();
|
|
Mat cameraMatrix = Mat.eye(3, 3, CvType.CV_64FC1);
|
|
Mat distCoeffs = new Mat(8, 1, CvType.CV_64FC1, new Scalar(0));
|
|
|
|
Imgproc.undistortPoints(src, dst, cameraMatrix, distCoeffs);
|
|
|
|
assertEquals(src.size(), dst.size());
|
|
for(int i=0; i<src.toList().size(); i++) {
|
|
//Log.d("UndistortPoints", "s="+src.get(i)+", d="+dst.get(i));
|
|
assertTrue(src.toList().get(i).equals(dst.toList().get(i)));
|
|
}
|
|
}
|
|
|
|
|
|
public void testWarpAffineMatMatMatSize() {
|
|
Mat src = new Mat(3, 3, CvType.CV_32F) {
|
|
{
|
|
put(0, 0, 2, 0, 1);
|
|
put(1, 0, 6, 4, 3);
|
|
put(2, 0, 1, 0, 2);
|
|
}
|
|
};
|
|
Mat M = new Mat(2, 3, CvType.CV_32F) {
|
|
{
|
|
put(0, 0, 1, 0, 1);
|
|
put(1, 0, 0, 1, 1);
|
|
}
|
|
};
|
|
|
|
Imgproc.warpAffine(src, dst, M, new Size(3, 3));
|
|
|
|
truth = new Mat(3, 3, CvType.CV_32F) {
|
|
{
|
|
put(0, 0, 0, 0, 0);
|
|
put(1, 0, 0, 2, 0);
|
|
put(2, 0, 0, 6, 4);
|
|
}
|
|
};
|
|
assertMatEqual(truth, dst, EPS);
|
|
}
|
|
|
|
public void testWarpAffineMatMatMatSizeInt() {
|
|
Mat src = new Mat(3, 3, CvType.CV_32F) {
|
|
{
|
|
put(0, 0, 2, 4, 1);
|
|
put(1, 0, 6, 4, 3);
|
|
put(2, 0, 0, 2, 2);
|
|
}
|
|
};
|
|
Mat M = new Mat(2, 3, CvType.CV_32F) {
|
|
{
|
|
put(0, 0, 1, 0, 0);
|
|
put(1, 0, 0, 0, 1);
|
|
}
|
|
};
|
|
|
|
Imgproc.warpAffine(src, dst, M, new Size(2, 2), Imgproc.WARP_INVERSE_MAP);
|
|
|
|
truth = new Mat(2, 2, CvType.CV_32F) {
|
|
{
|
|
put(0, 0, 6, 4);
|
|
put(1, 0, 6, 4);
|
|
}
|
|
};
|
|
assertMatEqual(truth, dst, EPS);
|
|
}
|
|
|
|
public void testWarpAffineMatMatMatSizeIntInt() {
|
|
fail("Not yet implemented");
|
|
}
|
|
|
|
public void testWarpAffineMatMatMatSizeIntIntScalar() {
|
|
fail("Not yet implemented");
|
|
}
|
|
|
|
public void testWarpPerspectiveMatMatMatSize() {
|
|
Mat src = new Mat(3, 3, CvType.CV_32F) {
|
|
{
|
|
put(0, 0, 2, 4, 1);
|
|
put(1, 0, 0, 4, 5);
|
|
put(2, 0, 1, 2, 2);
|
|
}
|
|
};
|
|
Mat M = new Mat(3, 3, CvType.CV_32F) {
|
|
{
|
|
put(0, 0, 1, 0, 1);
|
|
put(1, 0, 0, 1, 1);
|
|
put(2, 0, 0, 0, 1);
|
|
}
|
|
};
|
|
|
|
Imgproc.warpPerspective(src, dst, M, new Size(3, 3));
|
|
|
|
truth = new Mat(3, 3, CvType.CV_32F) {
|
|
{
|
|
put(0, 0, 0, 0, 0);
|
|
put(1, 0, 0, 2, 4);
|
|
put(2, 0, 0, 0, 4);
|
|
}
|
|
};
|
|
assertMatEqual(truth, dst, EPS);
|
|
}
|
|
|
|
public void testWarpPerspectiveMatMatMatSizeInt() {
|
|
fail("Not yet implemented");
|
|
}
|
|
|
|
public void testWarpPerspectiveMatMatMatSizeIntInt() {
|
|
fail("Not yet implemented");
|
|
}
|
|
|
|
public void testWarpPerspectiveMatMatMatSizeIntIntScalar() {
|
|
fail("Not yet implemented");
|
|
}
|
|
|
|
public void testWatershed() {
|
|
Mat image = Mat.eye(4, 4, CvType.CV_8UC(3));
|
|
Mat markers = new Mat(4, 4, CvType.CV_32SC1, new Scalar(0));
|
|
|
|
Imgproc.watershed(image, markers);
|
|
|
|
truth = new Mat(4, 4, CvType.CV_32SC1) {
|
|
{
|
|
put(0, 0, -1, -1, -1, -1);
|
|
put(1, 0, -1, 0, 0, -1);
|
|
put(2, 0, -1, 0, 0, -1);
|
|
put(3, 0, -1, -1, -1, -1);
|
|
}
|
|
};
|
|
assertMatEqual(truth, markers);
|
|
}
|
|
|
|
public void testGetTextSize() {
|
|
String text = "Android all the way";
|
|
double fontScale = 2;
|
|
int thickness = 3;
|
|
int baseLine[] = new int[1];
|
|
|
|
Imgproc.getTextSize(text, Core.FONT_HERSHEY_SCRIPT_SIMPLEX, fontScale, thickness, null);
|
|
Size res = Imgproc.getTextSize(text, Core.FONT_HERSHEY_SCRIPT_SIMPLEX, fontScale, thickness, baseLine);
|
|
|
|
assertEquals(543.0, res.width);
|
|
assertEquals(44.0, res.height);
|
|
assertEquals(20, baseLine[0]);
|
|
}
|
|
|
|
public void testCircleMatPointIntScalar() {
|
|
Point center = new Point(gray0.cols() / 2, gray0.rows() / 2);
|
|
int radius = Math.min(gray0.cols() / 4, gray0.rows() / 4);
|
|
Scalar color = new Scalar(128);
|
|
|
|
Imgproc.circle(gray0, center, radius, color);
|
|
|
|
assertTrue(0 != Core.countNonZero(gray0));
|
|
}
|
|
|
|
public void testCircleMatPointIntScalarInt() {
|
|
Point center = new Point(gray0.cols() / 2, gray0.rows() / 2);
|
|
int radius = Math.min(gray0.cols() / 4, gray0.rows() / 4);
|
|
Scalar color = new Scalar(128);
|
|
|
|
Imgproc.circle(gray0, center, radius, color, Core.FILLED);
|
|
|
|
assertTrue(0 != Core.countNonZero(gray0));
|
|
}
|
|
|
|
public void testCircleMatPointIntScalarIntIntInt() {
|
|
Point center = new Point(gray0.cols() / 2, gray0.rows() / 2);
|
|
Point center2 = new Point(gray0.cols(), gray0.rows());
|
|
int radius = Math.min(gray0.cols() / 4, gray0.rows() / 4);
|
|
Scalar color128 = new Scalar(128);
|
|
Scalar color0 = new Scalar(0);
|
|
|
|
Imgproc.circle(gray0, center2, radius * 2, color128, 2, Imgproc.LINE_4, 1/*
|
|
* Number
|
|
* of
|
|
* fractional
|
|
* bits
|
|
*/);
|
|
assertFalse(0 == Core.countNonZero(gray0));
|
|
|
|
Imgproc.circle(gray0, center, radius, color0, 2, Imgproc.LINE_4, 0);
|
|
|
|
assertTrue(0 == Core.countNonZero(gray0));
|
|
}
|
|
|
|
public void testClipLine() {
|
|
Rect r = new Rect(10, 10, 10, 10);
|
|
Point pt1 = new Point(5.0, 15.0);
|
|
Point pt2 = new Point(25.0, 15.0);
|
|
|
|
assertTrue(Imgproc.clipLine(r, pt1, pt2));
|
|
|
|
Point pt1Clipped = new Point(10.0, 15.0);
|
|
Point pt2Clipped = new Point(19.0, 15.0);
|
|
assertEquals(pt1Clipped, pt1);
|
|
assertEquals(pt2Clipped, pt2);
|
|
|
|
pt1 = new Point(5.0, 5.0);
|
|
pt2 = new Point(25.0, 5.0);
|
|
pt1Clipped = new Point(5.0, 5.0);
|
|
pt2Clipped = new Point(25.0, 5.0);
|
|
|
|
assertFalse(Imgproc.clipLine(r, pt1, pt2));
|
|
|
|
assertEquals(pt1Clipped, pt1);
|
|
assertEquals(pt2Clipped, pt2);
|
|
}
|
|
|
|
public void testEllipse2Poly() {
|
|
Point center = new Point(4, 4);
|
|
Size axes = new Size(2, 2);
|
|
int angle = 30;
|
|
int arcStart = 30;
|
|
int arcEnd = 60;
|
|
int delta = 2;
|
|
MatOfPoint pts = new MatOfPoint();
|
|
|
|
Imgproc.ellipse2Poly(center, axes, angle, arcStart, arcEnd, delta, pts);
|
|
|
|
Point truth[] = {
|
|
new Point(5, 6),
|
|
new Point(4, 6)
|
|
};
|
|
assertArrayPointsEquals(truth, pts.toArray(), EPS);
|
|
}
|
|
|
|
public void testEllipseMatPointSizeDoubleDoubleDoubleScalar() {
|
|
Point center = new Point(gray0.cols() / 2, gray0.rows() / 2);
|
|
Size axes = new Size(2, 2);
|
|
double angle = 30, startAngle = 60, endAngle = 90;
|
|
|
|
Imgproc.ellipse(gray0, center, axes, angle, startAngle, endAngle, colorWhite);
|
|
|
|
assertTrue(0 != Core.countNonZero(gray0));
|
|
}
|
|
|
|
public void testEllipseMatPointSizeDoubleDoubleDoubleScalarInt() {
|
|
Point center = new Point(gray0.cols() / 2, gray0.rows() / 2);
|
|
Size axes = new Size(2, 2);
|
|
double angle = 30, startAngle = 60, endAngle = 90;
|
|
|
|
Imgproc.ellipse(gray0, center, axes, angle, startAngle, endAngle, colorWhite, Core.FILLED);
|
|
|
|
assertTrue(0 != Core.countNonZero(gray0));
|
|
}
|
|
|
|
public void testEllipseMatPointSizeDoubleDoubleDoubleScalarIntIntInt() {
|
|
Point center = new Point(gray0.cols() / 2, gray0.rows() / 2);
|
|
Size axes = new Size(2, 2);
|
|
Point center2 = new Point(gray0.cols(), gray0.rows());
|
|
Size axes2 = new Size(4, 4);
|
|
double angle = 30, startAngle = 0, endAngle = 30;
|
|
|
|
Imgproc.ellipse(gray0, center, axes, angle, startAngle, endAngle, colorWhite, Core.FILLED, Imgproc.LINE_4, 0);
|
|
|
|
assertTrue(0 != Core.countNonZero(gray0));
|
|
|
|
Imgproc.ellipse(gray0, center2, axes2, angle, startAngle, endAngle, colorBlack, Core.FILLED, Imgproc.LINE_4, 1);
|
|
|
|
assertEquals(0, Core.countNonZero(gray0));
|
|
}
|
|
|
|
public void testEllipseMatRotatedRectScalar() {
|
|
int matSize = 10;
|
|
Mat gray0 = Mat.zeros(matSize, matSize, CvType.CV_8U);
|
|
Point center = new Point(matSize / 2, matSize / 2);
|
|
Size size = new Size(matSize / 4, matSize / 2);
|
|
RotatedRect box = new RotatedRect(center, size, 45);
|
|
|
|
Imgproc.ellipse(gray0, box, new Scalar(1));
|
|
|
|
final byte[] truth = new byte[] {
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
|
|
0, 0, 0, 0, 1, 1, 0, 1, 0, 0,
|
|
0, 0, 0, 0, 1, 0, 1, 0, 0, 0,
|
|
0, 0, 0, 1, 0, 1, 1, 0, 0, 0,
|
|
0, 0, 0, 1, 1, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
|
|
|
|
assertMatEqual(new Mat(matSize, matSize, CvType.CV_8U) {
|
|
{
|
|
put(0, 0, truth);
|
|
}
|
|
}, gray0);
|
|
}
|
|
|
|
public void testEllipseMatRotatedRectScalarInt() {
|
|
Point center = new Point(matSize / 2, matSize / 2);
|
|
Size size = new Size(matSize / 4, matSize / 2);
|
|
RotatedRect box = new RotatedRect(center, size, 45);
|
|
|
|
Imgproc.ellipse(gray0, box, new Scalar(1), Core.FILLED);
|
|
Imgproc.ellipse(gray0, box, new Scalar(0));
|
|
|
|
assertTrue(0 < Core.countNonZero(gray0));
|
|
}
|
|
|
|
public void testEllipseMatRotatedRectScalarIntInt() {
|
|
Point center = new Point(matSize / 2, matSize / 2);
|
|
Size size = new Size(2, matSize * 2 / 3);
|
|
RotatedRect box = new RotatedRect(center, size, 20);
|
|
|
|
Imgproc.ellipse(gray0, box, new Scalar(9), 1, Imgproc.LINE_AA);
|
|
Imgproc.ellipse(gray0, box, new Scalar(0), 1, Imgproc.LINE_4);
|
|
|
|
assertTrue(0 < Core.countNonZero(gray0));
|
|
}
|
|
|
|
public void testPolylinesMatListOfListOfPointBooleanScalar() {
|
|
Mat img = gray0;
|
|
List<MatOfPoint> polyline = new ArrayList<MatOfPoint>();
|
|
polyline.add(new MatOfPoint(new Point(1, 1), new Point(7, 1), new Point(7, 6), new Point(1, 6)));
|
|
|
|
Imgproc.polylines(img, polyline, true, new Scalar(100));
|
|
|
|
assertEquals(22, Core.countNonZero(img));
|
|
|
|
Imgproc.polylines(img, polyline, false, new Scalar(0));
|
|
|
|
assertEquals(4, Core.countNonZero(img));
|
|
}
|
|
|
|
public void testPolylinesMatListOfListOfPointBooleanScalarInt() {
|
|
Mat img = gray0;
|
|
List<MatOfPoint> polyline = new ArrayList<MatOfPoint>();
|
|
polyline.add(new MatOfPoint(new Point(1, 1), new Point(7, 1), new Point(7, 6), new Point(1, 6)));
|
|
|
|
Imgproc.polylines(img, polyline, true, new Scalar(100), 2);
|
|
|
|
assertEquals(62, Core.countNonZero(img));
|
|
}
|
|
|
|
public void testPolylinesMatListOfListOfPointBooleanScalarIntIntInt() {
|
|
Mat img = gray0;
|
|
List<MatOfPoint> polyline1 = new ArrayList<MatOfPoint>();
|
|
polyline1.add(new MatOfPoint(new Point(1, 1), new Point(7, 1), new Point(7, 6), new Point(1, 6)));
|
|
List<MatOfPoint> polyline2 = new ArrayList<MatOfPoint>();
|
|
polyline2.add(new MatOfPoint(new Point(2, 2), new Point(14, 2), new Point(14, 12), new Point(2, 12)));
|
|
|
|
Imgproc.polylines(img, polyline1, true, new Scalar(100), 2, Imgproc.LINE_8, 0);
|
|
|
|
assertTrue(Core.countNonZero(img) > 0);
|
|
|
|
Imgproc.polylines(img, polyline2, true, new Scalar(0), 2, Imgproc.LINE_8, 1);
|
|
|
|
assertEquals(0, Core.countNonZero(img));
|
|
}
|
|
|
|
public void testPutTextMatStringPointIntDoubleScalar() {
|
|
String text = "Hello World";
|
|
Size labelSize = new Size(175, 22);
|
|
Mat img = new Mat(20 + (int) labelSize.height, 20 + (int) labelSize.width, CvType.CV_8U, colorBlack);
|
|
Point origin = new Point(10, labelSize.height + 10);
|
|
|
|
Imgproc.putText(img, text, origin, Core.FONT_HERSHEY_SIMPLEX, 1.0, colorWhite);
|
|
|
|
assertTrue(Core.countNonZero(img) > 0);
|
|
// check that border is not corrupted
|
|
Imgproc.rectangle(img, new Point(11, 11), new Point(labelSize.width + 10, labelSize.height + 10), colorBlack, Core.FILLED);
|
|
assertEquals(0, Core.countNonZero(img));
|
|
}
|
|
|
|
public void testPutTextMatStringPointIntDoubleScalarInt() {
|
|
String text = "Hello World";
|
|
Size labelSize = new Size(176, 22);
|
|
Mat img = new Mat(20 + (int) labelSize.height, 20 + (int) labelSize.width, CvType.CV_8U, colorBlack);
|
|
Point origin = new Point(10, labelSize.height + 10);
|
|
|
|
Imgproc.putText(img, text, origin, Core.FONT_HERSHEY_SIMPLEX, 1.0, colorWhite, 2);
|
|
|
|
assertTrue(Core.countNonZero(img) > 0);
|
|
// check that border is not corrupted
|
|
Imgproc.rectangle(img, new Point(10, 10), new Point(labelSize.width + 10 + 1, labelSize.height + 10 + 1), colorBlack, Core.FILLED);
|
|
assertEquals(0, Core.countNonZero(img));
|
|
}
|
|
|
|
public void testPutTextMatStringPointIntDoubleScalarIntIntBoolean() {
|
|
String text = "Hello World";
|
|
Size labelSize = new Size(175, 22);
|
|
|
|
Mat img = new Mat(20 + (int) labelSize.height, 20 + (int) labelSize.width, CvType.CV_8U, colorBlack);
|
|
Point origin = new Point(10, 10);
|
|
|
|
Imgproc.putText(img, text, origin, Core.FONT_HERSHEY_SIMPLEX, 1.0, colorWhite, 1, Imgproc.LINE_8, true);
|
|
|
|
assertTrue(Core.countNonZero(img) > 0);
|
|
// check that border is not corrupted
|
|
Imgproc.rectangle(img, new Point(10, 10), new Point(labelSize.width + 9, labelSize.height + 9), colorBlack, Core.FILLED);
|
|
assertEquals(0, Core.countNonZero(img));
|
|
}
|
|
}
|