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..
*****
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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() |
Y esto es algo de lo que obtuve, antes de procesar la imagen le aplique binarizacion y convolucion.
Pudieras haber generado los elipses como sugerí en el grupo y como hizo Triana. 4 pts.
ResponderEliminar