This project uses Template Matching technique for object detecting by detection the template image over base image.
REQUIREMENTS
pip install opencv-python
pip install Tkinter
📝
CODE EXPLANATION
Importing Differnt Libraries
import cv2
import tkinter as tk
from tkinter import filedialog,messagebox
import os
import sys
Taking Image input using Tkinter
Base Image Input | Template Image Input |
Taking User Input using TKinter
root = tk.Tk()
root.withdraw()
file_path_base = filedialog.askopenfilename(initialdir= os.getcwd(),title="Select Base Image: ")
file_path_temp= filedialog.askopenfilename(initialdir= os.getcwd(),title="Select Template Image: ")
cv2.imread()
Loading base image and template image using Input Image | Template Image | Result Image |
try:
img = cv2.imread(file_path_base)
cv2.cvtColor()
method is used to convert an image from one color space to another. There are more than 150 color-space conversion methods available in OpenCV.
Syntax: cv2.cvtColor(image, code, dst, dstCn)
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
template = cv2.imread(file_path_temp,0)
Getting the height and width of the template image using .shape
method.
h ,w = template.shape
Error dialogue box using Tkinter
except cv2.error:
messagebox.showinfo("Warning!","No Image Found!")
sys.exit(0)
cv2.matchTemplate
is used to comapare images. It gives a 2D-array as output.
match = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED)
threshold = 0.99
cv2.minMaxLoc
returns the top-left corner of the template position for the best match.
min_val, max_val, min_location, max_location = cv2.minMaxLoc(match)
location = max_location
font = cv2.FONT_HERSHEY_PLAIN
cv2.rectangle()
method is used to draw a rectangle on any image.
Syntax: cv2.rectangle(image, start_point, end_point, color, thickness)
cv2.rectangle(img, location, (location[0] + w, location[1] + h), (0,0,255), 2)
cv2.putText()
method is used to draw a text string on any image.
Syntax: cv2.putText(image, text, start_point, font, fontScale, color, thickness, lineType, bottomLeftOrigin)
cv2.putText(img,"Object Spotted.", (location[0]-40,location[1]-5),font , 1, (0,0,0),2)
cv2.imwrite()
method is used to save an image to any storage device. This will save the image according to the specified format in current working directory.cv2.imshow
method is used to display an image in a window. The window automatically fits to the image size.
Syntax: cv2.imwrite(filename, image)
Syntax: cv2.imshow(window_name, image)
cv2.imwrite('images/result.jpg',img)
cv2.imshow('Results.jpg',img)
cv2.waitkey()
allows you to wait for a specific time in milliseconds until you press any button on the keyword.
cv2.waitKey(0)
cv2.destroyAllWindows()
method destroys all windows whenever any key is pressed.
cv2.destroyAllWindows()
📬
Contact
If you want to contact me, you can reach me through below handles.