Etiquetas

jueves, 18 de abril de 2013

Actividad # 6 - Elipses

Para esta entrada se nos pidio trabajar con el tema de detección de elipses, solo que en este caso era identificarlo y rellenarlo con un color distinto al original.

Para realizar esto era necesario utilizar los puntos ubicados en el centro de cada posible elipse, y recorrerlo mediante un bfs, como se ha tratado en tareas anteriores.

Hasta ahorita tengo un avance parcial sobre esto, ya que tuve algunos problemas con la tarea de este tema, y este es el código que tengo..

*****
from time import *
import sys
import Tkinter
from PIL import Image, ImageTk
import random
import math
from math import *
def img():
image = Image.open("conv.png")
pixeles = image.load()
ancho, alto =image.size
return image, pixeles,ancho,alto
def fig(image,pixeles,ancho,alto):
contfig =0
for i in range(ancho):
for j in range (alto):
if pixeles[i,j]==(0,0,0):
r=random.randint(0,255)
g=random.randint(0,255)
b=random.randint(0,255)
pixeles = image.load()
ancho, alto = image.size
cola = []
ver = []
hor= []
cola.append((i,j))
pixelin = pixeles[i,j]
contador= 0
while len(cola) > 0:
(x, y) = cola.pop(0)
puntoactual = pixeles[x, y]
if puntoactual == pixelin or puntoactual == (r,g,b):
for parax in [-1, 0, 1]:
for paray in [-1, 0, 1]:
i, j = (x + parax, y + paray)
if i >= 0 and i < ancho and j >= 0 and j < alto:
contenido = pixeles[i, j]
if contenido == pixelin:
pixeles[i, j] = (r,g,b)
ver.append((i,j))
contador += 1
cola.append((i, j))
tamfig = len(ver)
tamimg = ancho * alto
porcent = tamfig * 100
porcent = porcent/ float(tamimg)
if porcent > .5:
contfig +=1
print "Porcentaje de la figura " +str(contfig) + " es " +str(porcent)
image.save("elipses_color.png",'png')
def main():
image,pixeles,ancho,alto=img()
fig(image,pixeles,ancho,alto)
main()
view raw elip.py hosted with ❤ by GitHub
*****

Y esto es algo de lo que obtuve, antes de procesar la imagen le aplique binarizacion y convolucion.




1 comentario:

  1. Pudieras haber generado los elipses como sugerí en el grupo y como hizo Triana. 4 pts.

    ResponderEliminar