Example usage for org.opencv.imgproc Imgproc invertAffineTransform

List of usage examples for org.opencv.imgproc Imgproc invertAffineTransform

Introduction

In this page you can find the example usage for org.opencv.imgproc Imgproc invertAffineTransform.

Prototype

public static void invertAffineTransform(Mat M, Mat iM) 

Source Link

Usage

From source file:OCV_InvertAffineTransform.java

License:Open Source License

@Override
public void run(ImageProcessor ip) {
    if (isPerspective) {
        Mat mat_src = new Mat(3, 3, CvType.CV_64FC1);
        Mat mat_dst = new Mat(3, 3, CvType.CV_64FC1);

        mat_src.put(0, 0, new double[] { Double.valueOf(rt.getStringValue(0, 0).replaceAll("\"|'", "")) });
        mat_src.put(0, 1, new double[] { Double.valueOf(rt.getStringValue(1, 0).replaceAll("\"|'", "")) });
        mat_src.put(0, 2, new double[] { Double.valueOf(rt.getStringValue(2, 0).replaceAll("\"|'", "")) });
        mat_src.put(1, 0, new double[] { Double.valueOf(rt.getStringValue(0, 1).replaceAll("\"|'", "")) });
        mat_src.put(1, 1, new double[] { Double.valueOf(rt.getStringValue(1, 1).replaceAll("\"|'", "")) });
        mat_src.put(1, 2, new double[] { Double.valueOf(rt.getStringValue(2, 1).replaceAll("\"|'", "")) });
        mat_src.put(2, 0, new double[] { Double.valueOf(rt.getStringValue(0, 2).replaceAll("\"|'", "")) });
        mat_src.put(2, 1, new double[] { Double.valueOf(rt.getStringValue(1, 2).replaceAll("\"|'", "")) });
        mat_src.put(2, 2, new double[] { Double.valueOf(rt.getStringValue(2, 2).replaceAll("\"|'", "")) });

        Imgproc.invertAffineTransform(mat_src, mat_dst);

        rt.reset();/*  w w w.  ja v  a  2s  . c  o  m*/
        rt.incrementCounter();
        rt.addValue("Column01", String.valueOf(mat_dst.get(0, 0)[0]));
        rt.addValue("Column02", String.valueOf(mat_dst.get(0, 1)[0]));
        rt.addValue("Column03", String.valueOf(mat_dst.get(0, 2)[0]));
        rt.incrementCounter();
        rt.addValue("Column01", String.valueOf(mat_dst.get(1, 0)[0]));
        rt.addValue("Column02", String.valueOf(mat_dst.get(1, 1)[0]));
        rt.addValue("Column03", String.valueOf(mat_dst.get(1, 2)[0]));
        rt.incrementCounter();
        rt.addValue("Column01", String.valueOf(mat_dst.get(2, 0)[0]));
        rt.addValue("Column02", String.valueOf(mat_dst.get(2, 1)[0]));
        rt.addValue("Column03", String.valueOf(mat_dst.get(2, 2)[0]));
        rt.show("Results");
    } else {
        Mat mat_src = new Mat(2, 3, CvType.CV_64FC1);
        Mat mat_dst = new Mat(2, 3, CvType.CV_64FC1);

        mat_src.put(0, 0, new double[] { Double.valueOf(rt.getStringValue(0, 0).replaceAll("\"|'", "")) });
        mat_src.put(0, 1, new double[] { Double.valueOf(rt.getStringValue(1, 0).replaceAll("\"|'", "")) });
        mat_src.put(0, 2, new double[] { Double.valueOf(rt.getStringValue(2, 0).replaceAll("\"|'", "")) });
        mat_src.put(1, 0, new double[] { Double.valueOf(rt.getStringValue(0, 1).replaceAll("\"|'", "")) });
        mat_src.put(1, 1, new double[] { Double.valueOf(rt.getStringValue(1, 1).replaceAll("\"|'", "")) });
        mat_src.put(1, 2, new double[] { Double.valueOf(rt.getStringValue(2, 1).replaceAll("\"|'", "")) });

        Imgproc.invertAffineTransform(mat_src, mat_dst);

        rt.reset();
        rt.incrementCounter();
        rt.addValue("Column01", String.valueOf(mat_dst.get(0, 0)[0]));
        rt.addValue("Column02", String.valueOf(mat_dst.get(0, 1)[0]));
        rt.addValue("Column03", String.valueOf(mat_dst.get(0, 2)[0]));
        rt.incrementCounter();
        rt.addValue("Column01", String.valueOf(mat_dst.get(1, 0)[0]));
        rt.addValue("Column02", String.valueOf(mat_dst.get(1, 1)[0]));
        rt.addValue("Column03", String.valueOf(mat_dst.get(1, 2)[0]));
        rt.show("Results");

    }
}

From source file:com.trandi.opentld.tld.PatchGenerator.java

License:Apache License

/**
 * /*  www.  j  a  v a 2  s.  co m*/
 * @param srcCenter
 * @param dstCenter
 * @param transform OUTPUT
 * @param inverse
 */
private void generateRandomTransform(Point srcCenter, Point dstCenter, Mat transform, boolean inverse) {
    MatOfDouble tempRand = new MatOfDouble(0d, 0d);
    Core.randu(tempRand, lambdaMin, lambdaMax);
    final double[] rands = tempRand.toArray();
    final double lambda1 = rands[0];
    final double lambda2 = rands[1];
    Core.randu(tempRand, thetaMin, thetaMax);
    final double theta = tempRand.toArray()[0];
    Core.randu(tempRand, phiMin, phiMax);
    final double phi = tempRand.toArray()[0];

    // Calculate random parameterized affine transformation A,
    // A = T(patch center) * R(theta) * R(phi)' * S(lambda1, lambda2) * R(phi) * T(-pt)
    final double st = Math.sin(theta);
    final double ct = Math.cos(theta);
    final double sp = Math.sin(phi);
    final double cp = Math.cos(phi);
    final double c2p = cp * cp;
    final double s2p = sp * sp;

    final double A = lambda1 * c2p + lambda2 * s2p;
    final double B = (lambda2 - lambda1) * sp * cp;
    final double C = lambda1 * s2p + lambda2 * c2p;

    final double Ax_plus_By = A * srcCenter.x + B * srcCenter.y;
    final double Bx_plus_Cy = B * srcCenter.x + C * srcCenter.y;

    transform.create(2, 3, CvType.CV_64F);
    transform.put(0, 0, A * ct - B * st);
    transform.put(0, 1, B * ct - C * st);
    transform.put(0, 2, -ct * Ax_plus_By + st * Bx_plus_Cy + dstCenter.x);
    transform.put(1, 0, A * st + B * ct);
    transform.put(1, 1, B * st + C * ct);
    transform.put(1, 2, -st * Ax_plus_By - ct * Bx_plus_Cy + dstCenter.y);

    if (inverse) {
        Imgproc.invertAffineTransform(transform, transform);
    }
}