Este dilema se puede abordar de diversas maneras, sin embargo te damos la que en nuestra opinión es la solución más completa.
Solución:
Existen las siguientes formas de hacer la comparación adecuada.
- primero es el Diferencia de raíz cuadrada media #
Para obtener una medida de cuán similares son dos imágenes, puede calcular el valor de la raíz cuadrada media (RMS) de la diferencia entre las imágenes. Si las imágenes son exactamente idénticas, este valor es cero. La siguiente función usa la función de diferencia y luego calcula el valor RMS del histograma de la imagen resultante.
# Example: File: imagediff.py
import ImageChops
import math, operator
def rmsdiff(im1, im2):
"Calculate the root-mean-square difference between two images"
h = ImageChops.difference(im1, im2).histogram()
# calculate rms
return math.sqrt(reduce(operator.add,
map(lambda h, i: h*(i**2), h, range(256))
) / (float(im1.size[0]) * im1.size[1]))
- Otro es Comparación exacta #
La forma más rápida de determinar si dos imágenes tienen exactamente el mismo contenido es obtener la diferencia entre las dos imágenes y luego calcular el cuadro delimitador de las regiones distintas de cero en esta imagen. Si las imágenes son idénticas, todos los píxeles de la imagen de diferencia son cero y la función del cuadro delimitador devuelve Ninguno.
import ImageChops
def equal(im1, im2):
return ImageChops.difference(im1, im2).getbbox() is None
Mantengo una biblioteca de Python llamada pyssim que usa el método de similitud estructurada (SSIM) para comparar dos imágenes.
No tiene enlaces de python, pero el programa perceptualdiff también es increíble para comparar dos imágenes, y bastante rápido.
Reseñas y puntuaciones
Si tienes algún reparo o disposición de regenerar nuestro sección eres capaz de realizar una referencia y con mucho gusto lo observaremos.