├── .idea ├── misc.xml ├── .gitignore ├── inspectionProfiles │ ├── profiles_settings.xml │ └── Project_Default.xml ├── modules.xml └── Deteccion.iml ├── README.md └── Deteccion.py /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | # Datasource local storage ignored files 5 | /dataSources/ 6 | /dataSources.local.xml 7 | # Editor-based HTTP Client requests 8 | /httpRequests/ 9 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/Deteccion.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Deteccion de Objetos con Template Matching 2 | Hola chicos, en este repositorio encontraran todo el codigo en Python de como pueden realizar una deteccion de objetos en tiempo real utilizando el metodo de Template Matching. 3 | 4 | ### Explicacion: 5 | - En el archivo Deteccio.py encontraras el codigo con el que puedes seleccionar que objeto deseas detectar, y su deteccion posterior en tiempo real, recuerda que debes instalar algunas librerias, asi que no te preocupes, aqui te dejo este [Video Explicativo](https://youtu.be/rdtRBrwSzLY) 6 | 7 | ![image](https://user-images.githubusercontent.com/85022752/160780063-bb2be8ba-07f2-421b-bde6-99c203446d67.png) 8 | 9 | ### Recuerda que la explicacion completa esta en mi canal de YouTube: 10 | - [Canal YouTube](https://www.youtube.com/channel/UCzwHEOCbsZLjfELperJ6VeQ/videos) 11 | - [Video Explicativo](https://youtu.be/rdtRBrwSzLY) 12 | 13 | 14 | ### Recuerda que puedes contribuir a que siga desarrollando: 15 | Simplemente suscribiendote a mi canal de YouTube: 16 | - [Canal YouTube](https://www.youtube.com/channel/UCzwHEOCbsZLjfELperJ6VeQ/videos) 17 | 18 | ### Siguiendome en mis redes sociales: 19 | - [Instagram](https://www.instagram.com/santiagsanchezr/) 20 | - [Twitter](https://twitter.com/SantiagSanchezR) 21 | -------------------------------------------------------------------------------- /Deteccion.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import cv2 # Importamos librerias 3 | 4 | #Vamos a capturar el objeto que queremos identificar 5 | 6 | cap = cv2.VideoCapture(1) # Elegimos la camara con la que vamos a hacer la deteccion 7 | while(True): 8 | ret,frame = cap.read() # Leemos el video 9 | cv2.imshow('Objeto',frame) # Mostramos el video en pantalla 10 | if cv2.waitKey(1) == 27: # Cuando oprimamos "Escape" rompe el video 11 | break 12 | cv2.imwrite('objeto.jpg',frame) # Guardamos la ultima caputra del video como imagen 13 | cap.release() # Cerramos 14 | cv2.destroyAllWindows() 15 | 16 | #Leemos la imagen del objeto que queremos identificar 17 | obj = cv2.imread('objeto.jpg',0) # Leemos la imagen 18 | recorte = obj[160:300, 230:380] # Recortamos la imagen para que quede solo el objeto (fila:fila, colum:colum) 19 | cv2.imshow('objeto',recorte) # Mostramos en pantalla el objeto a reconocer 20 | 21 | #Una vez tenemos el objeto definido tomamos la foto con el resto de objetos 22 | cap = cv2.VideoCapture(1) # Elegimos la camara con la que vamos a hacer la deteccion 23 | while(True): 24 | ret2,frame2 = cap.read() # Leemos el video 25 | cv2.imshow('Deteccion',frame2) # Mostramos el video en pantalla 26 | if cv2.waitKey(1) == 27: # Cuando oprimamos "Escape" rompe el video 27 | break 28 | cv2.imwrite('Deteccion.jpg',frame2) # Guardamos la ultima caputra del video como imagen 29 | cap.release() # Cerramos 30 | cv2.destroyAllWindows() 31 | 32 | #Mostramos la imagen con todos los objetos 33 | img = cv2.imread('Deteccion.jpg',3) 34 | gris = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # Pasamos la imagen a escala de grises 35 | cv2.imshow('Deteccion',img) 36 | 37 | #Empezamos el algoritmo 38 | w, h = recorte.shape[::-1] # Extraemos el ancho y el alto del recorte del objeto 39 | deteccion = cv2.matchTemplate(gris, recorte, cv2.TM_CCOEFF_NORMED) # Realizamos la deteccion por patrones 40 | umbral = 0.75 # Asignamos un umbral para filtrar objetos parecidos 41 | ubi = np.where(deteccion >= umbral) # La ubicacion de los objetos la vamos a guardar cuando supere el umbral 42 | for pt in zip (*ubi[::-1]): # Creamos un for para dibujar todos los rectangulos 43 | cv2.rectangle(img, pt, (pt[0]+w, pt[1]+h), (255,0,0), 1) # Dibujamos los n rectangulos que hayamos identificado con el tamaño del recorte y de color 44 | 45 | cv2.imshow('Deteccion',img) 46 | --------------------------------------------------------------------------------