Hasta ahora logramos detectar el guante rojo. Vamos a intentar detectar el guante verde.
En lugar de cambiar los rangos en el otro cuaderno, como ejercicio final de este tutorial, tenĆ©s que implementar una funciĆ³n llamada locate_object
que reciba una imagen y los rangos de color, y devuelva la posiciĆ³n del objeto con ese color en la imagen. De esta forma tendremos bien organizado el cĆ³digo para detectar otros objetos en un futuro.
La funciĆ³n sĆ³lo debe hacer lo que se viĆ³ en el otro tutorial; convertir a hsv, filtrar por color, luego erosionar, luego calcular el centro de masa del objeto, y se puede copiar el cĆ³digo utilizado anteriormente.
#IMPORTS DEL CUADERNO ANTERIOR Y FUNCIONES UTILES
import matplotlib.patches as patches
# comando de Jupyter para que las imagenes se muestren automaticamente
%matplotlib inline
#numpy es la libreria de arreglos de python (la llamaremos np)
import numpy as np
# el modulo pyplot de matplotlib (que llamaremos plt) nos permite mostrar imƔgenes
import matplotlib.pyplot as plt
#el modulo matplotlib.colors nos permite transformar el espacio de color de una imagen
import matplotlib.colors
#el modulo io de skimage sirve para cargar y guardar imagenes
from skimage import io
def dibujar_cuadrado(position):
size=70
canvas = plt.gca()
size_x,size_y=(size,size)
position_reversed=(position[1]-size_y/2,position[0]-size_x/2)
rectangle=patches.Rectangle(position_reversed, size_x,size_y, fill=True)
canvas.add_patch(rectangle)
def erode(segmentation_mask):
#IMPLEMENTAR
return 0 # retornar mascara de segmentacion erosionada
def segment_by_color(image_hsv,range_h,range_s,range_v):
#IMPLEMENTAR
return 0 # retornar mascara de segmentacion
def calculate_mass_center(mask):
#IMPLEMENTAR
return np.array([0,0]) #retornar posicion del centro de masa de la mƔscara
def locate_object(image_rgb,range_h,range_s,range_v):
#convertir la imagen de rgb a hsv
#IMPLEMENTAR
#generar la mĆ”scara de segmentaciĆ³n en base al color
#IMPLEMENTAR
#erosionar la mƔscara
#IMPLEMENTAR
#calcular centro de masa de la mĆ”scara para encontrar la posiciĆ³n del objeto
#IMPLEMENTAR
return np.array([0,0]) # retornar posiciĆ³n
green_range_h=(0/255, 0/255)
green_range_s=(0/255, 0/255)
green_range_v=(0/255, 0/255)
image = io.imread('guante.png')/255
green_glove_position=locate_object(image,green_range_h,green_range_s,green_range_v)
print("Las coordenadas del centro de la mano con el guante verde son:")
print(green_glove_position) # deberĆa imprimir algo similar a [570,1170]
plt.imshow(image)
dibujar_cuadrado(green_glove_position)