Foros del Web » Programando para Internet » Python »

Diferenciar dos fotos usando Python.

Estas en el tema de Diferenciar dos fotos usando Python. en el foro de Python en Foros del Web. Hola comunidad!! tengo un problema el cual le eh estado buscando solucion pero nada que lo puedo desifrar =(. Resulta que tengo que crear una ...
  #1 (permalink)  
Antiguo 07/10/2010, 21:50
 
Fecha de Ingreso: octubre-2010
Mensajes: 6
Antigüedad: 13 años, 6 meses
Puntos: 0
Diferenciar dos fotos usando Python.

Hola comunidad!! tengo un problema el cual le eh estado buscando solucion pero nada que lo puedo desifrar =(. Resulta que tengo que crear una funcion usando python en la cual los parametros sean dos fotos. La funcion en si debe de tomar dos fotos con las mismas dimensiones y devolver un valor entero(int) que indica cuanto de diferencia hay entre las dos fotos. Este valor entero se obtiene mediante la realización de la medición de distancia (la cual es una funcion que yo ya eh definido). La funcion de distancia se ve asi

def distance(pixel_a, pixel_b):
'''return an interger value that indicates how far in terms of color pixel a and pixel b are'''
distance_red = abs(pixel_a.get_red() - pixel_b.get_red())
distance_blue = abs(pixel_a.get_blue() - pixel_b.get_blue())
distance_green = abs(pixel_a.get_green() - pixel_b.get_green())
total_distance = distance_red + distance_blue + distance_green

ahora, yo debo de incorporar esta funcion en la funcion de la diferencia entre las dos fotos. Pero no se como hacer para que la funcion mida la distancia de cada foto por cada uno de los pixels que la foto tenga. la funcion de diferencia debe de devolver la suma de las diferencias de los pixels de cada una de las fotos.

Espero que me hayan entendido y perdon la molestia. Alguien tiene idea de como puedo solucionar este problema????
  #2 (permalink)  
Antiguo 07/10/2010, 21:51
 
Fecha de Ingreso: octubre-2010
Mensajes: 6
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Diferenciar dos fotos usando Python.

a si que mi funcion de diferencia empesaria asi:

def simple_difference(pic_a, pic_b):
  #3 (permalink)  
Antiguo 07/10/2010, 22:25
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Diferenciar dos fotos usando Python.

Puedes usar la PIL tal como lo siguieren aquí o tal vez quieres quieres algo parecido a esto

Aquí encontré exactamente lo que quieres.
  #4 (permalink)  
Antiguo 07/10/2010, 22:30
 
Fecha de Ingreso: octubre-2010
Mensajes: 6
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Diferenciar dos fotos usando Python.

gracias por la ayuda pero esque debo de hacer esta funcion pero sin ningun user input osea que no puedo hacer ni media.choose_file o image.open() =/
  #5 (permalink)  
Antiguo 08/10/2010, 06:47
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Diferenciar dos fotos usando Python.

Image.open no requiere intervención del usuario : /

Ademas no se como estés cargando las imágenes. Del ultimo link que te pase hay explica muy bien como sacar que tanto en porcentaje una imagen difiere de otra.
  #6 (permalink)  
Antiguo 08/10/2010, 09:57
 
Fecha de Ingreso: octubre-2010
Mensajes: 6
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Diferenciar dos fotos usando Python.

Si, yo vi el link que me dejaste pero ahi, estan encntrando la diferencia entre las fotos pero en porcentaje. Yo necesito encontrar la diferencia en el sentido de que el resultado debe de ser la suma de las diferencias en color de cada uno de los pixels en la foto. Si quieres puedes re leer lo que escribí en el primer post para que me puedas entender mejor. Por otro lado, aun no me han enseñado a usar itertools ósea que no creo que pueda usarlo. Tiene que haber una forma de hacer esta función sin usar itertools pero no puedo encontrar la forma. Como escribí en el primer post, yo cree una función que se llama distance(pixel_1, pixel_2) la cual toma dos pixels como argumento y encuentra la diferencia entre ellos dependiendo su color(Green, red y blue) ahora, de alguna forma debo de hacer esta misma función dentro de la función de diferencia. Así que la función de diferencia tiene que hacer que la función de distancia haga su procedimiento para cada uno de los pixels en las dos fotos, luego sumar estas diferencias y devolver ese resultado. Espero que me haya hecho entender. Y perdona que mi pregunta sea tancomplicada pero de verdad nesecito aprender a usar Python a la perfección :( así que cualquier ayuda cuenta :)
  #7 (permalink)  
Antiguo 08/10/2010, 10:29
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Diferenciar dos fotos usando Python.

La única diferencia de lo que quieres, con el código que te pase con lo que tu solo quieres la variable dif del código que te pase.

En este caso lo único para lo que ocupan itertools es para hacer un izip que es como un zip pero en vez de hacer una lista este regresa un generador (por el uso de memoria).

Si ya tienes una función que dado 2 pixeles regresa la diferencia de color. Solo recorre las 2 imágenes pixel por pixel y ve sumando sus diferencias. Es básicamente lo que hacen el código que te pase.

Si no te han enseñado itertools puedes aprender, no tienes que esperar a que lo enseñen para aprender.
  #8 (permalink)  
Antiguo 09/10/2010, 11:49
 
Fecha de Ingreso: octubre-2010
Mensajes: 6
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Diferenciar dos fotos usando Python.

si pero lo que pasa esque en el link que mediste, no estan definiendo ninguna funcion. Yo tengo que crear una funcion la cual haga la diferencia.
  #9 (permalink)  
Antiguo 09/10/2010, 15:29
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Diferenciar dos fotos usando Python.

Pues modifica el código para que funcione con tu función.

O que parte del código no entiendes?

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:55.