├── .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 |
4 |
5 |
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 |
4 |
5 |
6 |
14 |
15 |
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 | 
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 |
--------------------------------------------------------------------------------