Detección de Objetos con OpenCV y Python (CÓDIGO)

Este es el código que tanto esperabas... No olvides suscribirte a mi canal de YouTube: Alex7Tutoriales

La visión por computadora es una de las áreas más fascinantes de la tecnología moderna. Con la ayuda de herramientas como OpenCV y Python, ahora es posible detectar objetos y realizar un seguimiento de ellos en tiempo real.

¿Qué es OpenCV y por qué usarlo?
OpenCV (Open Source Computer Vision) es una biblioteca de software de código abierto diseñada para tareas de visión por computadora. Su capacidad para procesar imágenes y videos lo convierte en una herramienta fundamental para proyectos que involucran reconocimiento de patrones, seguimiento de objetos, y análisis de imágenes.

Python, por otro lado, es un lenguaje de programación conocido por su simplicidad y versatilidad. Al combinar Python con OpenCV, puedes desarrollar aplicaciones de visión por computadora de manera eficiente y con menos líneas de código.

Detectando Objetos con OpenCV
El proceso para detectar objetos y encerrarlos en recuadros se basa principalmente en dos conceptos fundamentales: detección de bordes y segmentación de contornos.

Pasos Básicos del Proceso:

Cargar y preprocesar la imagen o el video:
  • Convertir la imagen a escala de grises.
  • Aplicar suavizado para reducir el ruido.
Detectar bordes:
  • Utilizar el algoritmo Canny para identificar los bordes en la imagen.
Encontrar contornos:
  • Analizar los bordes detectados para identificar los contornos de los objetos.
Dibujar rectángulos alrededor de los objetos:
  • Utilizar las coordenadas de los contornos para encerrar los objetos en recuadros.


***************************************************************************

#importacion de modulos

import cv2
import numpy as np

#creamos el objeto de video (camara)
captura=cv2.VideoCapture(0) #Si no te abre la camara prueba con 1 o 2 u otros

while True:
        #capturamos frame a frame
        (grabbed,image) = captura.read()
        #si hemos llegado al final del video salimos
        if not grabbed:
            break

        #1.Conversion a Escala de Grises
        gray=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
        #cv2.imshow("Escala de Grises sin filtro",gray)
        gray=cv2.GaussianBlur(gray,(3,3),0)
        #cv2.imshow("Escala de Grises",gray)

        #2.Deteccion de bordes
        edged=cv2.Canny(gray,50,150)
        #cv2.imshow("Edged",edged)

        #3.Operaciones Morfologicas Cierre
        kernel=cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))
        closed=cv2.morphologyEx(edged,cv2.MORPH_CLOSE,kernel,iterations=2)

        cv2.imshow("Closed",closed)

        #4.Encontrar contornos
        _,cnts,_=cv2.findContours(closed.copy(),
                          cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
        #print "contornos",len(cnts)
        
        total=0
        for c in cnts:

                area=cv2.contourArea(c)
                #print "area",area

                if area>1700:
        
                        #aproximacion de contorno
                        peri=cv2.arcLength(c,True) #Perimetro
                        approx=cv2.approxPolyDP(c,0.02*peri,True)
                        #Si la aproximacion tiene 4 vertices correspondera a un rectangulo (Libro)
                        if len(approx)==4:
                                cv2.drawContours(image,[approx],-1,(0,255,0),3,cv2.LINE_AA)
                                total+=1

        #5.Poner texto en imagen
        letrero= 'Objetos: '+ str(total)
        cv2.putText(image,letrero,(10,150),cv2.FONT_HERSHEY_SIMPLEX,1,(255,0,0),2)

        
        #Mostramos imagen
        cv2.imshow("video", image)
        #capturamos teclado
        tecla=cv2.waitKey(25) & 0xFF
        #Salimos si la tecla presionada es ESC
        if tecla== 27:
            break


#Liberamos Objeto
captura.release()

#Destruimos Ventanas
cv2.destroyAllWindows()

************************************************************************************

La detección de objetos usando Visión por Computador es una herramienta muy útil para crear aplicaciones novedosas y controlar procesos.

Aplicaciones Prácticas de la Detección de Objetos
  • Seguridad: Monitoreo y seguimiento de intrusos en sistemas de videovigilancia.
  • Robótica: Guía de robots autónomos para interactuar con objetos en su entorno.
  • Agricultura: Identificación de cultivos o plagas en imágenes aéreas.
  • Comercio minorista: Seguimiento de productos en estanterías mediante cámaras.
Consejos para Optimizar tu Proyecto
  • Ajusta los parámetros del detector de bordes Canny para mejorar la precisión según el entorno.
  • Preprocesa tus imágenes aplicando filtros de suavizado para reducir el ruido antes de detectar bordes.
  • Experimenta con otros métodos de detección de contornos, como el uso de máscaras o técnicas avanzadas de segmentación.
Expandiendo las Posibilidades: Seguimiento y Análisis
  • Seguimiento en tiempo real: Utiliza algoritmos como el de Kalman o redes neuronales para rastrear objetos en movimiento.
  • Clasificación de objetos: Integra modelos de aprendizaje automático para identificar qué tipo de objetos estás detectando.


El uso de OpenCV y Python para detectar objetos es solo el comienzo de lo que puedes lograr con la visión por computadora. Este tutorial te brinda una base sólida para experimentar y desarrollar proyectos avanzados. Desde la creación de sistemas de monitoreo hasta soluciones innovadoras en diversas industrias, las posibilidades son infinitas.


Como siempre, espero que estos videos e información les sea muy útil, no olvides suscribirte a mi canal en YouTube. Saludos 😎

Alex7 Tutoriales

Tutoriales que en algún momento te pueden ser útiles.... Suscribete!

1 Comentarios

Artículo Anterior Artículo Siguiente