Saltar al contenido

Comparar imágenes en Python

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *