0% encontró este documento útil (0 votos)
29 vistas4 páginas

Detección de Figuras con Python

Este documento presenta un proyecto de detección de objetos en imágenes utilizando Python. El proyecto importa una imagen, la convierte a escala de grises, encuentra los bordes de los objetos y los contorna. Luego, clasifica las figuras detectadas (triángulo, cuadrado, rectángulo, pentágono, hexágono, octágono o círculo) dependiendo del número de bordes. Finalmente, etiqueta y cuenta los objetos detectados en la imagen.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
29 vistas4 páginas

Detección de Figuras con Python

Este documento presenta un proyecto de detección de objetos en imágenes utilizando Python. El proyecto importa una imagen, la convierte a escala de grises, encuentra los bordes de los objetos y los contorna. Luego, clasifica las figuras detectadas (triángulo, cuadrado, rectángulo, pentágono, hexágono, octágono o círculo) dependiendo del número de bordes. Finalmente, etiqueta y cuenta los objetos detectados en la imagen.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Universidad Veracruzana

Facultad de negocios y tecnologías

Laboratorio de resolución de problemas

Roa Rebolledo Arturo Getsemani

Conde Marín Irving Rafael, zS20006735

Ingeniería de software
Proyecto Final Python: Detección de objetos en imágenes
# Importamos nuestras clases
import cv2
import numpy as np

# Importamos nuestra imagen


imagen = [Link]('[Link]')
imagen2=[Link]('[Link]',0)
#Creamos nuestro arreglo de ceros uwu
arreglo = [Link]([Link], np.uint8)
vaarreglo = 0

# Pasamos nuestra imagen a grises


grises = [Link](imagen, cv2.COLOR_BGR2GRAY)
ret, thresh = [Link](grises, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)

# Encontrar nuestros bordes 7w7


bordes = [Link](grises, 200, 300)

# Ventana de impresión
[Link]("bordes de los objetos encontrados UwU", bordes)

# Contar cuántos bordes tenemos


ctns, _ = [Link](bordes, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# Dibujamos nuestros bordes


[Link](imagen, ctns, -1, (0, 0, 255), 2)

# Ventana de impresión x2
[Link]("Bordes sobre nuestra imagen definida", imagen)

# Espacio
print(" ")

# Saber qué figuras tenemos en nuestra imagen


# PD: no pude hacer que encontrara la sexta figura :c
for c in ctns:
# Con este valor podemos ir encontrando las figuras dibujadas, dependiendo el borde
# Si le cambia el valor con otros valores ya no detecta algunas figuras(ejemplo: 0.005)
a = 0.01 * [Link](c, True)
b = [Link](c, a, True)
# Forma de diferenciar un cuadrado de un rectangulo
x, y, w, h = [Link](b)
#Si los bordes son iguales a 3, entonces decimos que se trata de un triangulo
if len(b) == 3:
print("Encontramos un triangulo")
# Si los bordes son iguales a 4, entonces verificamos de qué figura se trata
if len(b) == 4:
diferencia = float(w) / h
if diferencia == 1:
# Si los bordes son iguales entonces decimos que se trata de un cuadrado
print("Encontramos un cuadrado")
#De caso contrario decimos que se trata de un rectangulo
else:
print("Encontramos un rectangulo")
# Si los bordes son iguales a 5, entonces decimos que se trata de un Pentagono
if len(b) == 5:
print("Encontramos un pentagono")
# Si los bordes son iguales a 6, entonces decimos que se trata de un Hexagono
if len(b) == 6:
print("Encontramos un hexagono")
# Si los bordes son iguales a 8, entonces decimos que se trata de un Octagono
if len(b) == 8:
print("Encontramos un octagono")
# Si los bordes son mayores de 10 lados, entonces decimos que se trata de un circulos
if len(b) > 10:
print("Encontramos un circulo")

# Espacio x2
print(" ")

# Arreglo para dibujar nuestra imagen

for i in range(368):
for j in range(707):
if imagen2[i, j] > 0:
imagen2[i, j] = 255
if imagen2[i, j] == 255 and vaarreglo == 0:
vaarreglo = 1
arreglo[i, j] = vaarreglo
else:
if imagen2[i, j] == 255 and arreglo[i, j - 1] != 0 and arreglo[i-1, j] == 0:
arreglo[i, j] = arreglo[i, j - 1]
elif imagen2[i, j] == 255 and arreglo[i, j - 1] == 0 and arreglo[i-1, j] != 0:
arreglo[i, j] = arreglo[i-1, j]
elif imagen2[i, j] == 255 and arreglo[i, j - 1] == 0 and arreglo[i, j - 1] == 0:
vaarreglo = vaarreglo + 1
arreglo[i, j] = vaarreglo
elif imagen2[i, j] == 255 and arreglo[i, j - 1] != 0 and arreglo[i-1, j] != 0:
if arreglo[i, j - 1] > arreglo[i-1, j]:
arreglo[i, j] = arreglo[i-1, j]
con=1
while arreglo[i, j-con] > arreglo[i, j]:
arreglo[i, j - con] = arreglo[i, j]
con = con + 1
vaarreglo = vaarreglo - 1
elif arreglo[i, j - 1] == arreglo[i-1, j]:
arreglo[i, j] = arreglo[i, j - 1]

#Imprimimos nuestras etiquetas


print ("Número de etiquetas: ",vaarreglo)

# Imprimir la cantidad de contornos encontrados


print('Número de figuras encontrados: ', len(ctns))

#Hacemos que el evento espere de forma indefinida, poniendo un 0


[Link](0)
#Destruimos nuestras ventanas
[Link]()

#Este proyecto puede ser utilizado en la detección de objetos en las imagenes, podemos ver únicamente los bordes de los
#objetos presentes, podemos visualizar los objetos con sus bordes remarcados y contar cuántos objetos hay en presentes en la imagen

También podría gustarte