与PIL的图像比较未按预期工作

时间:2012-03-29 12:29:45

标签: python image-processing python-imaging-library

我正在尝试与linux x屏幕截图图像进行图像比较而不是实际执行

我遵循python脚本

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

它工作并为样本鸭图像(snap_from_x_duck enter image description here和resized_from_duck enter image description here)提供输出,我用它进行测试,但是当我加载我的实际图像时(snap_from_x.png enter image description here AND resized_from_org.png enter image description here)它给出了错误..

  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

完全需要这方面的帮助才能解决这个问题

1 个答案:

答案 0 :(得分:5)

有什么(非常)可能发生的是,配方只能用于RGB图像 - 而且你的图像是一个调色版本,每个像素只有1个字节(因此,图像的像素是单个字节,不是具有RGB值的可迭代的。)

解决方法是在调用比较函数之前将图像转换为RGB - 只是做:

img = img.convert("RGB")