文档结构  
翻译进度:已翻译     翻译赏金:0 元 (?)    ¥ 我要打赏

在过去的几年, 我为老板写了一些自动化测试. 这众多自动化测试的其中一种就是比较应用如何画图. 应用每次画图的方式都一样吗? 如果不一样, 那就是个严重的问题了. 要比较它每次画的都一模一样的话, 一个比较简单的方法是将每次画的图像截图下来, 然后与程序更新后新的版本图像进行比较.

Pillow库为这个工作提供了一个实用的工具: ImageChops. 如果你还没有Pillow, 你应该现在安装它, 以便可以继续下面的教程.

第 1 段(可获 1.49 积分)

对比两个图像

我们首先要做的是找到两张有细微差别的图像。你可以自己制造一组,用你相机上的连拍模式拍摄一些正在运动的动物的照片,最好使用三脚架拍摄。或者你也可以在现存的照片上叠加一些东西,比如文字。我采用第二种方式。下图是我在Oregon拍摄的Multnomah瀑布的原始照片:

multnomah_falls

下面这张图是微调后的版本,我添加了一些表示这个照片拍摄地点的文字:

multnomah_falls_text

接下来让我们用ImageChops来帮我们找这两张照片中的不同!

import Image 
import ImageChops   

def compare_images(path_one, path_two, diff_save_location): """ Compares to images and saves a diff image, if there is a difference   @param: path_one: The path to the first image @param: path_two: The path to the second image """ image_one = Image.open(path_one) image_two = Image.open(path_two)   diff = ImageChops.difference(image_one, image_two)   if diff.getbbox() is None: # There is no difference between the images return else: diff.save(diff_save_location)   if __name__ == '__main__': compare_images('/path/to/multnomah_falls.jpg', '/path/to/multnomah_falls_text.jpg', '/path/to/diff.jpg')

 

第 2 段(可获 1.39 积分)

这是一个可以用来找图片中的不同的简单的函数。你需要做的就是传递三个路径给它!前两个路径是我们要对比的两张图片的路径。最后一个路径是如果我们找到两图片的差别我们要存储的差别图像的路径。对于这个例子来说,我们当然应该能找到差别,而我们也确实找到了,下图就是我运行这段代码之后得到的结果:

diff

总结

Pillow扩展包有许多令人惊叹的图像处理功能。 我喜欢摄影,因此能够拍摄照片并用我最喜欢的变成语言帮我把它们整理好很有意思。你也应该尝试一下,阅读Pillow的帮助文档看看你还能用这个功能强大的扩展包做什么!

第 3 段(可获 1.76 积分)

文章评论