Estoy tratando de hacer una comparación de imágenes con la imagen de captura de pantalla de linux x frente a la imagen real al hacer eso

Sigo el script de python

http://aatiis.me/2010/08/12/fast-image-comparison-with-python.html

Funciona y entrega una salida para una imagen de pato de muestra (snap_from_x_duck ingrese la descripción de la imagen aquí Y resized_from_duck ingrese la descripción de la imagen aquí) que usé para probar pero cuando cargo mi imagen real (snap_from_x.png ingrese  descripción de la imagen aquí Y resized_from_org.png  ingrese la descripción de la imagen aquí ) da un error ..

  Comparing 1 images:
 *  1 /  1: /opt/ad_re.png /opt/op.png ...
 Traceback (most recent call last):
     File "imgcmp.py", line 246, in <module>
         sim = cmp.similarity()
     File "imgcmp.py", line 212, in similarity
         cmp = self.compare()
     File "imgcmp.py", line 180, in compare
         diff.append(cmp.levenshtein)
     File "imgcmp.py", line 127, in levenshtein
         stra_r = ''.join((chr(x>>16) for x in self.imga_int))
     File "imgcmp.py", line 50, in imga_int
         self._imga_int = tuple(self._img_int(self._imga))
     File "imgcmp.py", line 120, in _img_int
         yield pixel[0] | (pixel[1]<<8) | (pixel[2]<<16)
 TypeError: 'int' object is unsubscriptable

ES CONFUSO QUE TOTALMENTE REQUIERE ALGUNA AYUDA EN ESTO

0
Ragav 29 mar. 2012 a las 16:29
Parece que pixel es un int. publicar más código, es decir, qué es _img_int. O, alternativamente, podría ejecutar un depurador en él.
 – 
Preet Kukreti
29 mar. 2012 a las 16:37

1 respuesta

La mejor respuesta

Lo que es (muy) probable que esté sucediendo allí es que la receta está hecha para funcionar solo con imágenes RGB, y su imagen es una versión con paleta, con solo 1 byte por píxel (por lo tanto, el píxel de la imagen es un solo byte, no un iterable con los valores RGB).

La solución para esto es convertir sus imágenes a RGB antes de llamar a su función de comparación, simplemente haga:

img = img.convert("RGB")

5
jsbueno 29 mar. 2012 a las 16:47
Probaré nuestra solución y antes de probar esto por curiosidad, hice el mismo código para la imagen del pato.
 – 
Ragav
29 mar. 2012 a las 19:24