How to use the cv2.minMaxLoc() in template matching
Here is the code I used for template matching and what do min_val, max_val, min_loc, max_loc mean? what are they used for?
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('C:\machineLearning\positive\1.jpg', 0)
img2 = img.copy()
template = cv2.imread('C:\machineLearning\positive\1_.jpg', 0)
w, h = template.shape[::-1]
img = img2.copy()
method = eval('cv2.TM_SQDIFF')
res = cv2.matchTemplate(img,template,method)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
top_left = min_loc
bottom_right = (top_left[0] + w, top_left[1] + h)
cv2.rectangle(img,top_left, bottom_right, 255, 2)
plt.subplot(121),plt.imshow(res,cmap = 'gray')
plt.title('Matching Result'), plt.xticks(), plt.yticks()
plt.subplot(122),plt.imshow(img,cmap = 'gray')
plt.title('Detected Point'), plt.xticks(), plt.yticks()
plt.suptitle('cv2.TM_SQDIFF')
plt.show()
python opencv image-processing opencv3.0 template-matching
add a comment |
Here is the code I used for template matching and what do min_val, max_val, min_loc, max_loc mean? what are they used for?
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('C:\machineLearning\positive\1.jpg', 0)
img2 = img.copy()
template = cv2.imread('C:\machineLearning\positive\1_.jpg', 0)
w, h = template.shape[::-1]
img = img2.copy()
method = eval('cv2.TM_SQDIFF')
res = cv2.matchTemplate(img,template,method)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
top_left = min_loc
bottom_right = (top_left[0] + w, top_left[1] + h)
cv2.rectangle(img,top_left, bottom_right, 255, 2)
plt.subplot(121),plt.imshow(res,cmap = 'gray')
plt.title('Matching Result'), plt.xticks(), plt.yticks()
plt.subplot(122),plt.imshow(img,cmap = 'gray')
plt.title('Detected Point'), plt.xticks(), plt.yticks()
plt.suptitle('cv2.TM_SQDIFF')
plt.show()
python opencv image-processing opencv3.0 template-matching
min_val == minimum value, max_val == maximum value, min_loc == location of the minimum value (coordinates from the input image) max_loc == location of the maximum value (coordinates from the input image) You can confirm that by doing help(cv2.minMaxLoc) in your python interpreter. In the example of code you give min_loc is used to set the upper corner of a region of interest bounding box. The other variables seem not been used.
– John_Sharp1318
Nov 14 '18 at 4:57
min_val = minimum value, I definitely know that as I know English, what I asked was the meaning of the minimum value
– Cherry
Nov 14 '18 at 8:09
As written in the documentation (docs.opencv.org/master/d2/de8/…) the minimum value is the global minimum value (aka the minimum value among all the value of the matrix).
– John_Sharp1318
Nov 14 '18 at 22:25
Does that mean something? for example If I use TM_SQDIFF, does minimum value indicate the amount of matching?
– Cherry
Nov 15 '18 at 6:48
Check the documentation of the matchTemplate function. If (and only if) the variable "res" does contains the results of a square difference (and only that) so yes the minimum value will be the a global minimum square difference. If the variable does contains something that is influence by a square difference but is not the square difference so the interpretation is related to what information is store in res. You can easily find this information in the documentation. Please do check the documentation.
– John_Sharp1318
Nov 15 '18 at 16:27
add a comment |
Here is the code I used for template matching and what do min_val, max_val, min_loc, max_loc mean? what are they used for?
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('C:\machineLearning\positive\1.jpg', 0)
img2 = img.copy()
template = cv2.imread('C:\machineLearning\positive\1_.jpg', 0)
w, h = template.shape[::-1]
img = img2.copy()
method = eval('cv2.TM_SQDIFF')
res = cv2.matchTemplate(img,template,method)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
top_left = min_loc
bottom_right = (top_left[0] + w, top_left[1] + h)
cv2.rectangle(img,top_left, bottom_right, 255, 2)
plt.subplot(121),plt.imshow(res,cmap = 'gray')
plt.title('Matching Result'), plt.xticks(), plt.yticks()
plt.subplot(122),plt.imshow(img,cmap = 'gray')
plt.title('Detected Point'), plt.xticks(), plt.yticks()
plt.suptitle('cv2.TM_SQDIFF')
plt.show()
python opencv image-processing opencv3.0 template-matching
Here is the code I used for template matching and what do min_val, max_val, min_loc, max_loc mean? what are they used for?
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('C:\machineLearning\positive\1.jpg', 0)
img2 = img.copy()
template = cv2.imread('C:\machineLearning\positive\1_.jpg', 0)
w, h = template.shape[::-1]
img = img2.copy()
method = eval('cv2.TM_SQDIFF')
res = cv2.matchTemplate(img,template,method)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
top_left = min_loc
bottom_right = (top_left[0] + w, top_left[1] + h)
cv2.rectangle(img,top_left, bottom_right, 255, 2)
plt.subplot(121),plt.imshow(res,cmap = 'gray')
plt.title('Matching Result'), plt.xticks(), plt.yticks()
plt.subplot(122),plt.imshow(img,cmap = 'gray')
plt.title('Detected Point'), plt.xticks(), plt.yticks()
plt.suptitle('cv2.TM_SQDIFF')
plt.show()
python opencv image-processing opencv3.0 template-matching
python opencv image-processing opencv3.0 template-matching
edited Nov 14 '18 at 2:45
Cherry
asked Nov 14 '18 at 2:05
CherryCherry
97
97
min_val == minimum value, max_val == maximum value, min_loc == location of the minimum value (coordinates from the input image) max_loc == location of the maximum value (coordinates from the input image) You can confirm that by doing help(cv2.minMaxLoc) in your python interpreter. In the example of code you give min_loc is used to set the upper corner of a region of interest bounding box. The other variables seem not been used.
– John_Sharp1318
Nov 14 '18 at 4:57
min_val = minimum value, I definitely know that as I know English, what I asked was the meaning of the minimum value
– Cherry
Nov 14 '18 at 8:09
As written in the documentation (docs.opencv.org/master/d2/de8/…) the minimum value is the global minimum value (aka the minimum value among all the value of the matrix).
– John_Sharp1318
Nov 14 '18 at 22:25
Does that mean something? for example If I use TM_SQDIFF, does minimum value indicate the amount of matching?
– Cherry
Nov 15 '18 at 6:48
Check the documentation of the matchTemplate function. If (and only if) the variable "res" does contains the results of a square difference (and only that) so yes the minimum value will be the a global minimum square difference. If the variable does contains something that is influence by a square difference but is not the square difference so the interpretation is related to what information is store in res. You can easily find this information in the documentation. Please do check the documentation.
– John_Sharp1318
Nov 15 '18 at 16:27
add a comment |
min_val == minimum value, max_val == maximum value, min_loc == location of the minimum value (coordinates from the input image) max_loc == location of the maximum value (coordinates from the input image) You can confirm that by doing help(cv2.minMaxLoc) in your python interpreter. In the example of code you give min_loc is used to set the upper corner of a region of interest bounding box. The other variables seem not been used.
– John_Sharp1318
Nov 14 '18 at 4:57
min_val = minimum value, I definitely know that as I know English, what I asked was the meaning of the minimum value
– Cherry
Nov 14 '18 at 8:09
As written in the documentation (docs.opencv.org/master/d2/de8/…) the minimum value is the global minimum value (aka the minimum value among all the value of the matrix).
– John_Sharp1318
Nov 14 '18 at 22:25
Does that mean something? for example If I use TM_SQDIFF, does minimum value indicate the amount of matching?
– Cherry
Nov 15 '18 at 6:48
Check the documentation of the matchTemplate function. If (and only if) the variable "res" does contains the results of a square difference (and only that) so yes the minimum value will be the a global minimum square difference. If the variable does contains something that is influence by a square difference but is not the square difference so the interpretation is related to what information is store in res. You can easily find this information in the documentation. Please do check the documentation.
– John_Sharp1318
Nov 15 '18 at 16:27
min_val == minimum value, max_val == maximum value, min_loc == location of the minimum value (coordinates from the input image) max_loc == location of the maximum value (coordinates from the input image) You can confirm that by doing help(cv2.minMaxLoc) in your python interpreter. In the example of code you give min_loc is used to set the upper corner of a region of interest bounding box. The other variables seem not been used.
– John_Sharp1318
Nov 14 '18 at 4:57
min_val == minimum value, max_val == maximum value, min_loc == location of the minimum value (coordinates from the input image) max_loc == location of the maximum value (coordinates from the input image) You can confirm that by doing help(cv2.minMaxLoc) in your python interpreter. In the example of code you give min_loc is used to set the upper corner of a region of interest bounding box. The other variables seem not been used.
– John_Sharp1318
Nov 14 '18 at 4:57
min_val = minimum value, I definitely know that as I know English, what I asked was the meaning of the minimum value
– Cherry
Nov 14 '18 at 8:09
min_val = minimum value, I definitely know that as I know English, what I asked was the meaning of the minimum value
– Cherry
Nov 14 '18 at 8:09
As written in the documentation (docs.opencv.org/master/d2/de8/…) the minimum value is the global minimum value (aka the minimum value among all the value of the matrix).
– John_Sharp1318
Nov 14 '18 at 22:25
As written in the documentation (docs.opencv.org/master/d2/de8/…) the minimum value is the global minimum value (aka the minimum value among all the value of the matrix).
– John_Sharp1318
Nov 14 '18 at 22:25
Does that mean something? for example If I use TM_SQDIFF, does minimum value indicate the amount of matching?
– Cherry
Nov 15 '18 at 6:48
Does that mean something? for example If I use TM_SQDIFF, does minimum value indicate the amount of matching?
– Cherry
Nov 15 '18 at 6:48
Check the documentation of the matchTemplate function. If (and only if) the variable "res" does contains the results of a square difference (and only that) so yes the minimum value will be the a global minimum square difference. If the variable does contains something that is influence by a square difference but is not the square difference so the interpretation is related to what information is store in res. You can easily find this information in the documentation. Please do check the documentation.
– John_Sharp1318
Nov 15 '18 at 16:27
Check the documentation of the matchTemplate function. If (and only if) the variable "res" does contains the results of a square difference (and only that) so yes the minimum value will be the a global minimum square difference. If the variable does contains something that is influence by a square difference but is not the square difference so the interpretation is related to what information is store in res. You can easily find this information in the documentation. Please do check the documentation.
– John_Sharp1318
Nov 15 '18 at 16:27
add a comment |
1 Answer
1
active
oldest
votes
If you go through cv2.matchTemplate()
docs, the function returns a fuzzy single channel matrix with the matching score of template and input image segments. For cv2.TM_CCOEFF
method the point with the highest score would be the brightest, but in case of cv2.TM_SQDIFF_NORMED
method, the point with highest score would be darkest
cv2.TM_CCOEFF Results:
cv2.TM_SQDIFF_NORMED Results:
So depending upon the various methods available, you may sometimes need to get the brightest spot or the darkest spot in the output matrix. cv2.minMaxLoc()
is just a unification of these two generic operations, when you are using minMaxLoc
, you can ignore min
attributes for your use case.
Thank you, Since Im using TM_SQDIFF method and I will need to consider the min attributes right? what does the darkest point mean? is it the best match? and if that become smaller the detection is more accurate? and if it becomes a larger value the detection is more inaccurate?
– Cherry
Nov 14 '18 at 8:13
Yes exactly :) (y)
– ZdaR
Nov 14 '18 at 9:01
I see thats what I wanted to know, thank you
– Cherry
Nov 15 '18 at 6:50
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53292170%2fhow-to-use-the-cv2-minmaxloc-in-template-matching%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
If you go through cv2.matchTemplate()
docs, the function returns a fuzzy single channel matrix with the matching score of template and input image segments. For cv2.TM_CCOEFF
method the point with the highest score would be the brightest, but in case of cv2.TM_SQDIFF_NORMED
method, the point with highest score would be darkest
cv2.TM_CCOEFF Results:
cv2.TM_SQDIFF_NORMED Results:
So depending upon the various methods available, you may sometimes need to get the brightest spot or the darkest spot in the output matrix. cv2.minMaxLoc()
is just a unification of these two generic operations, when you are using minMaxLoc
, you can ignore min
attributes for your use case.
Thank you, Since Im using TM_SQDIFF method and I will need to consider the min attributes right? what does the darkest point mean? is it the best match? and if that become smaller the detection is more accurate? and if it becomes a larger value the detection is more inaccurate?
– Cherry
Nov 14 '18 at 8:13
Yes exactly :) (y)
– ZdaR
Nov 14 '18 at 9:01
I see thats what I wanted to know, thank you
– Cherry
Nov 15 '18 at 6:50
add a comment |
If you go through cv2.matchTemplate()
docs, the function returns a fuzzy single channel matrix with the matching score of template and input image segments. For cv2.TM_CCOEFF
method the point with the highest score would be the brightest, but in case of cv2.TM_SQDIFF_NORMED
method, the point with highest score would be darkest
cv2.TM_CCOEFF Results:
cv2.TM_SQDIFF_NORMED Results:
So depending upon the various methods available, you may sometimes need to get the brightest spot or the darkest spot in the output matrix. cv2.minMaxLoc()
is just a unification of these two generic operations, when you are using minMaxLoc
, you can ignore min
attributes for your use case.
Thank you, Since Im using TM_SQDIFF method and I will need to consider the min attributes right? what does the darkest point mean? is it the best match? and if that become smaller the detection is more accurate? and if it becomes a larger value the detection is more inaccurate?
– Cherry
Nov 14 '18 at 8:13
Yes exactly :) (y)
– ZdaR
Nov 14 '18 at 9:01
I see thats what I wanted to know, thank you
– Cherry
Nov 15 '18 at 6:50
add a comment |
If you go through cv2.matchTemplate()
docs, the function returns a fuzzy single channel matrix with the matching score of template and input image segments. For cv2.TM_CCOEFF
method the point with the highest score would be the brightest, but in case of cv2.TM_SQDIFF_NORMED
method, the point with highest score would be darkest
cv2.TM_CCOEFF Results:
cv2.TM_SQDIFF_NORMED Results:
So depending upon the various methods available, you may sometimes need to get the brightest spot or the darkest spot in the output matrix. cv2.minMaxLoc()
is just a unification of these two generic operations, when you are using minMaxLoc
, you can ignore min
attributes for your use case.
If you go through cv2.matchTemplate()
docs, the function returns a fuzzy single channel matrix with the matching score of template and input image segments. For cv2.TM_CCOEFF
method the point with the highest score would be the brightest, but in case of cv2.TM_SQDIFF_NORMED
method, the point with highest score would be darkest
cv2.TM_CCOEFF Results:
cv2.TM_SQDIFF_NORMED Results:
So depending upon the various methods available, you may sometimes need to get the brightest spot or the darkest spot in the output matrix. cv2.minMaxLoc()
is just a unification of these two generic operations, when you are using minMaxLoc
, you can ignore min
attributes for your use case.
edited Nov 14 '18 at 9:00
answered Nov 14 '18 at 6:47
ZdaRZdaR
13k33553
13k33553
Thank you, Since Im using TM_SQDIFF method and I will need to consider the min attributes right? what does the darkest point mean? is it the best match? and if that become smaller the detection is more accurate? and if it becomes a larger value the detection is more inaccurate?
– Cherry
Nov 14 '18 at 8:13
Yes exactly :) (y)
– ZdaR
Nov 14 '18 at 9:01
I see thats what I wanted to know, thank you
– Cherry
Nov 15 '18 at 6:50
add a comment |
Thank you, Since Im using TM_SQDIFF method and I will need to consider the min attributes right? what does the darkest point mean? is it the best match? and if that become smaller the detection is more accurate? and if it becomes a larger value the detection is more inaccurate?
– Cherry
Nov 14 '18 at 8:13
Yes exactly :) (y)
– ZdaR
Nov 14 '18 at 9:01
I see thats what I wanted to know, thank you
– Cherry
Nov 15 '18 at 6:50
Thank you, Since Im using TM_SQDIFF method and I will need to consider the min attributes right? what does the darkest point mean? is it the best match? and if that become smaller the detection is more accurate? and if it becomes a larger value the detection is more inaccurate?
– Cherry
Nov 14 '18 at 8:13
Thank you, Since Im using TM_SQDIFF method and I will need to consider the min attributes right? what does the darkest point mean? is it the best match? and if that become smaller the detection is more accurate? and if it becomes a larger value the detection is more inaccurate?
– Cherry
Nov 14 '18 at 8:13
Yes exactly :) (y)
– ZdaR
Nov 14 '18 at 9:01
Yes exactly :) (y)
– ZdaR
Nov 14 '18 at 9:01
I see thats what I wanted to know, thank you
– Cherry
Nov 15 '18 at 6:50
I see thats what I wanted to know, thank you
– Cherry
Nov 15 '18 at 6:50
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53292170%2fhow-to-use-the-cv2-minmaxloc-in-template-matching%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
min_val == minimum value, max_val == maximum value, min_loc == location of the minimum value (coordinates from the input image) max_loc == location of the maximum value (coordinates from the input image) You can confirm that by doing help(cv2.minMaxLoc) in your python interpreter. In the example of code you give min_loc is used to set the upper corner of a region of interest bounding box. The other variables seem not been used.
– John_Sharp1318
Nov 14 '18 at 4:57
min_val = minimum value, I definitely know that as I know English, what I asked was the meaning of the minimum value
– Cherry
Nov 14 '18 at 8:09
As written in the documentation (docs.opencv.org/master/d2/de8/…) the minimum value is the global minimum value (aka the minimum value among all the value of the matrix).
– John_Sharp1318
Nov 14 '18 at 22:25
Does that mean something? for example If I use TM_SQDIFF, does minimum value indicate the amount of matching?
– Cherry
Nov 15 '18 at 6:48
Check the documentation of the matchTemplate function. If (and only if) the variable "res" does contains the results of a square difference (and only that) so yes the minimum value will be the a global minimum square difference. If the variable does contains something that is influence by a square difference but is not the square difference so the interpretation is related to what information is store in res. You can easily find this information in the documentation. Please do check the documentation.
– John_Sharp1318
Nov 15 '18 at 16:27