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 original
AYUDA 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()