List of usage examples for org.opencv.imgproc Imgproc invertAffineTransform
public static void invertAffineTransform(Mat M, Mat iM)
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); } }