Maxvalue in cv2.minMaxLoc()? Maxvalue in cv2.minMaxLoc()? numpy numpy

Maxvalue in cv2.minMaxLoc()?


Ideally, cv2.matchTemplate returns a correlation map, essentially a grayscale image, where each pixel denotes how much does the neighborhood of that pixel match with the template.

You suggest that we are interested only in maxLoc and maxVal and that isn't true, it is subject to the type of correlation you are considering when matching a template.

Now, to your questions, the minMaxLoc function returns the max and min intensity values in a Mat or an array along with the location of these intensities.

MaxLoc means where is the highest intensity in the image returned by matchTemplate which would correspond to the best match in your image w.r.t. to your template ( for specific correlation methods only, for TM_SQDIFF or TM_SQDIFF_NORMED the best match would be the minVal).

Since the image returned by matchTemplate is gray-scale, the range should be dependent on the original image, so 2000000 to 7000000 seem a bit out of order to me.

The only "physical characteristics" that affect the maxVal should be the degree of correlation the template has with the image and nothing else.

Hope it helps!


As the other answers already explain, you are matching based on cross-correlation. So maxVal is the maximum of your cross-correlation. It is difficult to make a generic guess about the range. But you can always limit the range to [0, 1] by

normalize(result, result, 0, 1, NORM_MINMAX, -1, Mat());


If you crop the region of the image that best matches the template, then the value of the peak of the cross-correlation function is

np.sum(cropped * template)

This value will get bigger when the image is brighter, when the template is brighter, and when the template is bigger.