[JAVA] Desktop: OpenCV Find Transform ECC

Goal
Test OpenCV find transform ECC.

OpenCV_FindTransformECC.java


import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.core.TermCriteria;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import org.opencv.video.Video;


public class OpenCV_FindTransformECC {
    static{ System.loadLibrary(Core.NATIVE_LIBRARY_NAME); }

    public static void main(String[] args) {

        Mat templste = Imgcodecs.imread("D:\\projects\\Java\\OpenCV_Samples\\resource\\imgs\\DSC_0675.jpg ",Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE);
        Mat needToBeAdjusted = Imgcodecs.imread("D:\\projects\\Java\\OpenCV_Samples\\resource\\imgs\\DSC_0663.jpg ",Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE);


        //Definition Bewegungsmodell Warp Matrix
        Mat warp_matrix2=Mat.eye(2, 3, CvType.CV_32F);

        int maxIterations=5000;
        Mat mask=new Mat();

        //Erzwungene ECC-Arithmetik. Ergebnis Restverzerrungsmatrix
        Video.findTransformECC(templste, needToBeAdjusted, warp_matrix2,Video.MOTION_EUCLIDEAN,new TermCriteria(TermCriteria.COUNT | TermCriteria.EPS, maxIterations, 1E-10),mask);
        Mat aligned=new Mat();

        //for  Euclidean and Affine
        Imgproc.warpAffine(needToBeAdjusted, aligned, warp_matrix2, templste.size(),Imgproc.INTER_LINEAR+Imgproc.WARP_INVERSE_MAP);
        Imgcodecs.imwrite("D:\\projects\\Java\\OpenCV_Samples\\resource\\imgs\\findTransformECC2.jpg ",aligned);
    }
}
Result
![DSC_0675.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276243/4d17afd5-c2a7-83ae-ba5b-fe7da3baa318.jpeg) ![DSC_0663.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276243/8c5f1b76-ff50-f954-ac6f-6909ed66e512.jpeg) ![findTransformECC2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276243/3b0222ad-0d19-3105-e5f0-617ee33f808e.jpeg)

Recommended Posts

Desktop: OpenCV Find Transform ECC
Desktop: OpenCV BilateralFilterBlur
Desktop: OpenCV Dilate
Desktop: OpenCV-Erweiterung
Desktop: OpenCV Affine
Desktop: OpenCV Emboss
Desktop: OpenCV CLAHE
Desktop: OpenCV Ellipse2Poly
Desktop: OpenCV HDR
Desktop: OpenCV-Polylinien
Desktop: OpenCV Denoise
Desktop: OpenCV-Schärfe
Desktop: OpenCV Concat
Desktop: OpenCV OpenCV_SalonUseBlurAddWeighted
Desktop: OpenCV-Mosaik
Desktop: OpenCV Erode
Desktop: OpenCV Denoise
Desktop: OpenCV Find Chessboard Corners von WebCam
Desktop: OpenCV-Rechteck
Desktop: OpenCV-Wasserscheide
Desktop: OpenCV-Text
Desktop: OpenCV Inpaint
Desktop: OpenCV NormalizeBlur
Desktop: OpenCV StereoSGBM
Desktop: OpenCV Find Chessboard Corners von WebCam
Desktop: OpenCV Spot
Desktop: OpenCV Canny
Desktop: OpenCV Denoise3
Desktop: OpenCV-Histogramm
Desktop: OpenCV Dft
Desktop: OpenCV Decolor
Desktop: OpenCV FaceDetector
Desktop: OpenCV Denoise2
Desktop: OpenCV StereoBM
Desktop: OpenCV Kirsch Filter
Desktop: OpenCV Laplace Filter 2
Desktop: OpenCV-Beleuchtungsänderung
Desktop: OpenCV WaterMark hinzufügen
Desktop: OpenCV Sharpness Gui
Desktop: OpenCV-Farbänderung
Desktop: OpenCV Freichennel Filter
Desktop: OpenCV Adaptive Threshold
Desktop: OpenCV-Zeichnungskreis
Desktop: OpenCV Fill Poly
Desktop: OpenCV-Mittelwertfilter
Desktop: OpenCV Java Repository
Desktop: OpenCV Sobel Filter2
Desktop: OpenCV pyrMeanShift Filter
Desktop: OpenCV OpticalFlow PyrLK
Desktop: OpenCV Virtual Piano
Desktop: OpenCV-Bild zusammenführen
Desktop: OpenCV Scharr Filter
Desktop: Opencv-Webcam-Vorschau
Desktop: OpenCV-Laplace-Filter
Desktop: OpenCV Median Blur
Desktop: OpenCV Add Broad
Desktop: OpenCV Robinson Filter
Desktop: OpenCV-Videoaufzeichnung
Desktop: OpenCV Texture Flatting
Desktop: OpenCV Flood Fill
Desktop: OpenCV-Farbraum