jueves, 25 de abril de 2013

Lab: Detección de hoyos

Para este laboratorio se nos pide realizar lineas en donde las intercesiones tengan hoyos, Aquí unas capturas de pantalla.

 




Este es el código.

def boton_hoyos():
#A grises
imagen2 = cambiar_agrises(path_imagen_original)
imagen = cambiar_agrises(path_imagen_original)
imagen.save("paso_1.jpg")
umbral_valor = 0.2
imagen = cambiar_umbral(imagen.convert("RGB"), umbral_valor)
imagen.save("paso_2.jpg")
pixeles_img = imagen.load()
x, y = imagen.size
pixeles = numpy.zeros(x*y).reshape((x, y))
for a in range(x):
for b in range(y):
pixeles[a, b] = pixeles_img[a, b][0]
col, fil = pixeles.shape
suma_filas = []
suma_col = []
dibuja = ImageDraw.Draw(imagen2)
for i in range(col):
suma_col.append(pixeles[i].sum())
for i in range(fil):
suma_filas.append(pixeles[:, i].sum())
maxcol, mincol, prueba_col = peakdet(suma_col, .1)
maxfil, minfil, prueba_fil = peakdet(suma_filas, .1)
coor_filas = []
coor_col = []
for i in range(len(suma_filas)):
y = i
PixMax = 255*col
x = (((suma_filas[i]) * col) / PixMax)
#print "(%s, %s)" %(str(x), str(y))
dibuja.ellipse((x-2, y-2, x+2, y+2), fill="blue")
if i in prueba_fil:
coor_filas.append(y)
dibuja.line((x, y, 0, y), fill="green")
#dibuja.ellipse((x-4, y-4, x+4, y+4), fill="red")
for i in range(len(suma_col)):
x = i
PixMax = 255*fil
y = (((suma_col[i]) * fil) / PixMax)
#print "(%s, %s)" %(str(x), str(y))
dibuja.ellipse((x-2, y-2, x+2, y+2), fill="green")
if i in prueba_col:
coor_col.append(x)
dibuja.line((x, y, x, 0), fill="red")
#dibuja.ellipse((x-4, y-4, x+4, y+4), fill="red")
imagen2.save("paso_algo.jpg")
if coor_col < coor_filas:
tam = len(coor_filas)
else:
tam = len(coor_col)
coor_filas = coor_filas[::-1]
#coor_col = coor_col[::-1]
centros = []
imagen_copia = imagen
for i in range(tam):
x = coor_col[i]
y = coor_filas[i]
print "(%s, %s)" %(str(x), str(y))
print pixeles[x, y]
color = (randint(170,230), randint(0,190), 255)
if pixeles[x, y] == 0.0:
imagen_copia, masa, c = BFS(imagen_copia.convert("RGB"), (x, y), color)
x_suma = 0
y_suma = 0
for i in range(len(masa)):
x_suma = x_suma + masa[i][0]
y_suma = y_suma + masa[i][1]
x_centro = x_suma/len(masa)
y_centro = y_suma/len(masa)
centros.append((x_centro, y_centro))
#dibuja.ellipse((x-1, y-1, x+1, y+1), fill="yellow")
imagen_copia.save("paso_3.jpg")
label.destroy()
poner_imagen(imagen2)
global frame
y = frame.winfo_height()
imagen4 = cambiar_agrises(path_imagen_original)
dibuja3 = ImageDraw.Draw(imagen4)
for i in range(len(centros)):
label_fig = Label(text = str(i))
label_fig.place(x = centros[i][0], y = centros[i][1] + y)
#dibuja3.ellipse((centros[i][0]-2, centros[i][1]-2, centros[i][0]+2, centros[i][1]+2), fill="yellow")
dibuja3.line((x, y, x, 0), fill="red")
imagen4.save("paso_4.jpg")
view raw hoyos.py hosted with ❤ by GitHub

No hay comentarios:

Publicar un comentario