【发布时间】:2014-11-25 15:38:06
【问题描述】:
我正在使用 PIL 比较 2 张图像/图片。下面的代码适用于一些图片,但不是全部。
from PIL import Image
from PIL import ImageChops
from PIL import ImageDraw
im1 = Image.open(r'c:\a.jpg')
im2 = Image.open(r'c:\aa.jpg')
diff = ImageChops.difference(im2, im1).getbbox()
print diff
draw = ImageDraw.Draw(im2)
draw.rectangle(diff)
im2 = im2.convert('RGB')
im2.save(r'c:\aaa.jpg')
例如,这两张图片就不行了。
.jpg
aa.jpg
输出是 (16, 80, 80, 144) 但是它没有在图片上绘制任何东西。
问题:
- 为什么会这样?
- 文件类型重要吗?即 JPG 与 JPG 比较; PNG与PNG比较; BMP 与 BMP 的比较——哪种格式最适合比较?
- 有时差异在于图片上的远距离,因此它会绘制一个大矩形以包含整个区域。有没有办法只绘制小矩形来标记差异?
谢谢。
【问题讨论】:
-
你的矩形调用需要颜色吗?
-
在openCV包中,您可以根据强度差异抓取各个区域的变化。入门:opencvpython.blogspot.ca/2012/06/…
-
你确定它没有画出任何东西,也许可以通过矩形的颜色来检查,
draw.rectangle(diff, outline = (0,255,0)) -
谢谢,user1269942。我会阅读教程。
-
@Marcin,感谢您的提示。有人知道PNG、JPG、BMP等文件格式是否重要吗?
标签: python image python-imaging-library