Hola, mi problema es luego de cargar la imagen y mostrarla en la interfaz ocurre que quiero modificarlo a operador identidad pero no se como enviar la imagen desde el metodo abre() hacia el metodo identidad() luego mostrarlo ya cambiado necesito hacer el mismo procedimiento para los otros operadores puntuales.
este es el avance que pude hacer
from tkinter import *
from PIL import ImageTk, Image
from tkinter import filedialog
import tkinter as tk
ancho = 200
alto = 0
ventana=Tk()
ventana.geometry("700x600+100+100")
ventana.title("Ejercicio 2")
def abre():
pic=filedialog.askopenfilename()
img=Image.open(pic)
o_size=img.size
f_size=(200,200)
factor = min(float(f_size[1])/o_size[1], float(f_size[0])/o_size[0])
width = int(o_size[0] * factor)
height = int(o_size[1] * factor)
rImg= img.resize((width, height), Image.ANTIALIAS)
rImg = ImageTk.PhotoImage(rImg)
lblImage=Label(ventana,image=rImg).place(x=150,y=150)
ventana.mainloop()
return rImg
def identidad(img):
img=abre()
salida = Image.new("L",(ancho,alto))
for i in range(img.size[0]):
for j in range(img.size[1]):
p = img.getpixel((i,j))
q = p
salida.putpixel((i,j),q)
return salida
imgGray = Image.open(filedialog.askopenfilename()).convert("L")
ancho,alto = imgGray.size
resultado = identidad(imgGray)
resultado.show()
##label
lbldes=Label(text="Crear en python un menu para seleccionar el tipo de operador puntual a mostrar.",font=("Agency FB",16)).place(x=10,y=45)
lblimang=Label(text="Pulse para cargar imagen",font=("Agency FB",14)).place(x=25,y=80)
#botones##
btnImag=Button(ventana,text="cargar Imagen",command=abre,font=("Agency FB",14),width=15).place(x=200,y=80)
btnImag=Button(ventana,text="Operador Identidad",command=identidad,font=("Agency FB",14),width=15).place(x=30,y=370)
la verdad que no entiendo la lógica de tu script y menos aún lo que estás planteando, así y todo le hice unas pequeñas modificaciones para que sea medianamente funcional y veas donde puede estar el problema.
from tkinter import *
from PIL import ImageTk, Image
from tkinter import filedialog
import tkinter as tk
ancho = 200
alto = 200
ventana=Tk()
ventana.geometry("700x600+100+100")
ventana.title("Ejercicio 2")
def abre():
global img
pic=filedialog.askopenfilename()
img=Image.open(pic)
o_size=img.size
f_size=(200,200)
factor = min(float(f_size[1])/o_size[1], float(f_size[0])/o_size[0])
width = int(o_size[0] * factor)
height = int(o_size[1] * factor)
rImg= img.resize((width, height), Image.ANTIALIAS)
rImg = ImageTk.PhotoImage(rImg)
lblImage=Label(ventana,image=rImg).place(x=150,y=150)
ventana.mainloop()
def identidad():
imga=img
imga =imga.resize((150,150),Image.ANTIALIAS)
salida = Image.new("RGB",(ancho,alto))
for i in range(imga.size[0]):
for j in range(imga.size[1]):
p = imga.getpixel((i,j))
q = p
salida.putpixel((i,j),q)
salida.show()
return salida
'''
imgGray = Image.open(filedialog.askopenfilename()).convert("L")
ancho,alto = imgGray.size
resultado = identidad(imgGray)
resultado.show()
'''
##label
lbldes=Label(text="Crear en python un menu para seleccionar el tipo de operador puntual a mostrar.",font=("Agency FB",16)).place(x=10,y=45)
lblimang=Label(text="Pulse para cargar imagen",font=("Agency FB",14)).place(x=25,y=80)
#botones##
btnImag=Button(ventana,text="cargar Imagen",command=abre,font=("Agency FB",14),width=15).place(x=200,y=80)
btnImag=Button(ventana,text="Operador Identidad",command=identidad,font=("Agency FB",14),width=15).place(x=30,y=370)
ventana.mainloop()
muchas gracias tincopasan, nadie me respondía en otros foros y si tienes razón no me explicado muy bien mi problema pero supiste entenderme.
lo pude terminar aun tengo que aprender, soy principiante en python.
mi fin era un botón que obtenga una imagen y esa imagen convertirla en los operadores puntuales.
gracuas ;-)