Template matching not working as expected [closed]

asked 2018-01-07 12:15:28 -0600

BhanuPrasad gravatar image

I am very new to opencv and using for template matching.Actually i want to match two images below are my code snippet

    int match_method=Imgproc.TM_CCOEFF_NORMED;
    Mat temp = Imgcodecs.imread(tempim,Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE );
    Mat img = Imgcodecs.imread(sourceim,Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE );

    Size sz = new Size(200, 200);
    Mat resizeimage = new Mat();
    Imgproc.resize(img, resizeimage, sz);
    Mat sourceimage = resizeimage;

    Mat resizeimage2 = new Mat();
    Imgproc.resize(temp, resizeimage2, sz);
    Mat templateimage = resizeimage2;

    int result_cols = sourceimage.cols() - templateimage.cols() + 1;
    int result_rows = sourceimage.rows() - templateimage.rows() + 1;
    Mat result = new Mat(result_rows, result_cols, CvType.CV_32FC1);
    Imgproc.matchTemplate(sourceimage,templateimage, result, match_method);
    //Core.normalize(result, result, 0, 1, Core.NORM_MINMAX, -1, new Mat());
     Imgproc.threshold(result, result,0.1,1.0,Imgproc.THRESH_TOZERO);

    Point matchLoc,maxLoc,minLoc;
    Core.MinMaxLocResult mmr;
    boolean iterate = true;
    double minlocvalue,maxlocvalue,minminvalue,maxmaxvalue;
    while(true){
        mmr = Core.minMaxLoc(result);

        if (match_method == Imgproc.TM_SQDIFF || match_method == Imgproc.TM_SQDIFF_NORMED) {
            matchLoc = mmr.minLoc;
            minminvalue = mmr.minVal; // test
        } else {
            matchLoc = mmr.maxLoc;
            maxmaxvalue = mmr.minVal; // test
        }
        Log.d(TAG, "mmr.maxVal : "+mmr.maxVal+ " "+sourceim);
    if(mmr.maxVal >=0.3)
        {
            Log.d(TAG, "imagemathed..");

            Imgproc.rectangle(sourceimage, matchLoc, new Point(matchLoc.x + templateimage.cols(),
                    matchLoc.y + templateimage.rows()), new Scalar(0, 255, 0));
            Imgcodecs.imwrite(outFile, img);
            Mat image = Imgcodecs.imread(outFile);

        }

when I am checking mmr.maxVal for same images some times I'M getting 0.333xxx value, some times i am getting 0.0. AM I doing anything wrong? Could you please help me to resolve the issue, why for same images also getting mmr.maxVal value is 0.0 Thanks in advance.

edit retag flag offensive reopen merge delete

Closed for the following reason question is not relevant or outdated by sturkmen
close date 2020-10-13 19:34:10.662080