Java openCV - after using Imgproc.matchTemplate method, how can I check the result?

I'm calling:

Imgproc.matchTemplate(image, templ, result, 0); 

and the result of the match is in the Mat instance. I could not find the documentation for this class. If I understand correctly, the result contains a probability matrix. How can I find the Maximum Probability? I don’t even understand what the Mat instance looks like and what it contains.

Thanks Eyal

+4
source share
2 answers

To check the results, you should use the minMaxLoc function, which is located inside the Core class. The method returns an instance of MinMaxLocResult, and it has many parameters inside.

+3
source

lena.png:

enter image description here

pattern.png:

enter image description here

 class MatchingDemo { public void run(String inFile, String templateFile, String outFile, int match_method) { System.out.println("\nRunning Template Matching"); Mat img = Highgui.imread(inFile); Mat templ = Highgui.imread(templateFile); // / Create the result matrix int result_cols = img.cols() - templ.cols() + 1; int result_rows = img.rows() - templ.rows() + 1; Mat result = new Mat(result_rows, result_cols, CvType.CV_32FC1); // / Do the Matching and Normalize Imgproc.matchTemplate(img, templ, result, match_method); Core.normalize(result, result, 0, 1, Core.NORM_MINMAX, -1, new Mat()); Highgui.imwrite("out2.png", result); // / Localizing the best match with minMaxLoc MinMaxLocResult mmr = Core.minMaxLoc(result); Point matchLoc; if (match_method == Imgproc.TM_SQDIFF || match_method == Imgproc.TM_SQDIFF_NORMED) { matchLoc = mmr.minLoc; System.out.println(mmr.minVal); } else { matchLoc = mmr.maxLoc; System.out.println(mmr.maxVal); } // / Show me what you got Core.rectangle(img, matchLoc, new Point(matchLoc.x + templ.cols(), matchLoc.y + templ.rows()), new Scalar(0, 255, 0)); // Save the visualized detection. System.out.println("Writing " + outFile); Highgui.imwrite(outFile, img); } } public class TemplateMatching { public static void main(String[] args) { System.loadLibrary("opencv_java249"); new MatchingDemo().run("lena.png", "pattern.png", "output.png", Imgproc.TM_CCOEFF); } } 
+7
source

Source: https://habr.com/ru/post/1400983/


All Articles