Hola!!
Necesito una ayudita, tengo que crear 3 filtros para aplicarle a una imagen de pixeles creada con una matriz.
1) Filtro reflexion horizontal (espejo)
2)Filtro blanco y negro ()
3)Filtro Mitad alto (reducir la altura de la imagen a la mitad y que el dibujo quede centrado)
Alguna idea, sugerencia??
les dejo lo que tengo hasta ahora, gracias!!
Código Python:
Ver originalAYUDA del módulo 'moduloimagen'. Define tres funciones,
# que podemos utilizar de la siguiente forma:
#
# - matriz = leerIm(nombreFichero). Lee la imagen del fichero
# indicado y la devuelve como una matriz de enteros. Cada
# elemento de la matriz se corresponde con un pixel de la
# imagen.
#
# - id = dibujarIm(matriz). Se dibuja la imagen en la ventana
# gráfica. La imagen se escala automáticamente para ocupar toda
# la ventana gráfica. El valor devuelto por la función puede
# utilizarse para borrar la imagen con la función que se presenta
# a continuación.
#
# - borrarImagen(id). Borra la imagen identificada como 'id'.
#
def menu():
opcion = ' '
while len(opcion) != 1 or opcion not in 'abc':
print 'Filtros de Imagen.'
print 'a) Reflexion Horizontal.'
print 'b) Blanco y Negro.'
print 'c) Mitad Alto.'
opcion = raw_input('Escoja una opcion: ')
if len(opcion) != 1 or opcion not in 'abc':
print 'Solo puede escoger las letras a, b o c. Intentelo de nuevo.'
return opcion
def _entero2color(n):
return '#'+('%02x'%n)*3
def leerIm(nombreFichero):
#lee imagen del fichero tux.txt
f=open(nombreFichero)
im1=f.read()
f.close()
#convierte datos en matriz
lin=im1.split('\n')
mat=[]
for l in lin:
if l=='': break
mat.append(map(int,l.split()))
return mat
def dibujarIm(mat):
filas=len(mat)
columnas=len(mat[0])
l=[]
xx1,yy1,xx2,yy2=window_coordinates()
px=float(xx2-xx1)/columnas
py=float(yy2-yy1)/filas
for i in range(filas):
for j in range(columnas):
if mat[i][j]==-1:
col='#ffff00'
else:
col=_entero2color(mat[i][j])
x1=xx1+px*j
y1=yy2-py*(i+1)
x2=xx1+px*(j+1)
y2=yy2-py*i
l.append(create_filled_rectangle(x1,y1,x2,y2,col))
return l
def borrarIm(ind):
map(erase,ind)
def reflexion_horizontal(mat):
for i in range(len(mat)/2):
c = mat[i]
mat[i] = mat[len(mat)-1-i]
mat[len(mat)-1-i] = c
return c
# La función leerIm("tux78x70.txt") lee la imagen y
# devuelve una matriz:
mat = leerIm("tux78x70.txt")
# La función dibujarIm(mat) dibuja la imagen dada la
# matriz que se le pasa como parámetro:
id = dibujarIm(mat)
# Borramos la imagen después de pulsar Return:
raw_input("Pulsa Return para borrar imagen: ")
borrarIm(id)
a = reflexion_horizontal(mat)
b = blanco_negro(mat)
c = mitad_alto(mat)
opcion = menu()
if opcion == a:
reflexion_horizontal(mat)
if opcion == b:
blanco_negro(mat)
else:
mitad_alto(mat)
menu()