Reputation: 1768
i am calling:
Imgproc.matchTemplate(image, templ, result, 0);
and the result of the match is in a Mat instance. I couldn't find any documentation for this class. If i understand right, the result contains a matrix of probabilities. How can i find the Maximum of the probabilities? I can't even understand how a Mat instance looks like and what it contains.
Thanks Eyal
Upvotes: 6
Views: 6960
Reputation: 1516
lena.png:
pattern.png:
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);
}
}
Upvotes: 9
Reputation: 1768
In order to test the results, one should use the function minMaxLoc that is located inside the class Core. The method returns an instance of MinMaxLocResult, and it has many options inside.
Upvotes: 3