Ask Your Question

Revision history [back]

How to find the return error if template pic is not match with input image using Template Matching method

import cv2 import numpy as np from matplotlib import pyplot as plt import os import pytesseract from PIL import Image os.chdir(r"C:\Users\D\Desktop")

img = cv2.imread('intel.jpeg',0) img2 = img.copy() template = cv2.imread('testing.jpeg',0) w, h = template.shape[::-1]

All the 6 methods for comparison in a list

methods = ['cv2.TM_SQDIFF', 'cv2.TM_SQDIFF_NORMED']

for meth in methods: img = img2.copy() method = eval(meth)

# Apply template Matching
res = cv2.matchTemplate(img,template,method)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)

# If the method is TM_SQDIFF or TM_SQDIFF_NORMED, take minimum
if method in [cv2.TM_SQDIFF, cv2.TM_SQDIFF_NORMED]:
    top_left = min_loc
else:
    top_left = max_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(meth)

plt.show()

here te "testing.jpeg" is not available in input pick but after its showing detected without showing any error

click to hide/show revision 2
retagged

updated 2018-12-28 04:02:43 -0600

berak gravatar image

How to find the return error if template pic is not match with input image using Template Matching method

import cv2 import numpy as np from matplotlib import pyplot as plt import os import pytesseract from PIL import Image os.chdir(r"C:\Users\D\Desktop")

img = cv2.imread('intel.jpeg',0) img2 = img.copy() template = cv2.imread('testing.jpeg',0) w, h = template.shape[::-1]

All the 6 methods for comparison in a list

methods = ['cv2.TM_SQDIFF', 'cv2.TM_SQDIFF_NORMED']

for meth in methods: img = img2.copy() method = eval(meth)

# Apply template Matching
res = cv2.matchTemplate(img,template,method)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)

# If the method is TM_SQDIFF or TM_SQDIFF_NORMED, take minimum
if method in [cv2.TM_SQDIFF, cv2.TM_SQDIFF_NORMED]:
    top_left = min_loc
else:
    top_left = max_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(meth)

plt.show()

here te "testing.jpeg" is not available in input pick but after its showing detected without showing any error

click to hide/show revision 3
None

updated 2018-12-28 04:03:12 -0600

berak gravatar image

How to find the return error if template pic is not match with input image using Template Matching method

.

import cv2
import numpy as np
from matplotlib import pyplot as plt
import os
import pytesseract
from PIL import Image
os.chdir(r"C:\Users\D\Desktop")

os.chdir(r"C:\Users\D\Desktop") img = cv2.imread('intel.jpeg',0) img2 = img.copy() template = cv2.imread('testing.jpeg',0) w, h = template.shape[::-1]

template.shape[::-1] # All the 6 methods for comparison in a list

list methods = ['cv2.TM_SQDIFF', 'cv2.TM_SQDIFF_NORMED']

'cv2.TM_SQDIFF_NORMED'] for meth in methods: img = img2.copy() method = eval(meth)

eval(meth)

    # Apply template Matching
 res = cv2.matchTemplate(img,template,method)
 min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)

 # If the method is TM_SQDIFF or TM_SQDIFF_NORMED, take minimum
 if method in [cv2.TM_SQDIFF, cv2.TM_SQDIFF_NORMED]:
     top_left = min_loc
 else:
     top_left = max_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(meth)

 plt.show()

here te "testing.jpeg" is not available in input pick but after its showing detected without showing any error error