python图像对比延迟多少_在Python中,计算两个图像之间绝对差异之和的最快方法是什么?...

我试图比较python3应用程序中的图像,该应用程序使用Pillow和Numpy(可选)。出于兼容性的原因,我不打算使用其他外部的非纯Python包。我在Roseta代码中找到了这个基于枕头的算法,它可能符合我的目的,但它需要一些时间:from PIL import Image

def compare_images(img1, img2):

"""Compute percentage of difference between 2 JPEG images of same size

(using the sum of absolute differences). Alternatively, compare two bitmaps

as defined in basic bitmap storage. Useful for comparing two JPEG images

saved with a different compression ratios.

Adapted from:

http://rosettacode.org/wiki/Percentage_difference_between_images#Python

:param img1: an Image object

:param img2: an Image object

:return: A float with the percentage of difference, or None if images are

not directly comparable.

"""

# Don't compare if images are of different modes or different sizes.

if (img1.mode != img2.mode) \

or (img1.size != img2.size) \

or (img1.getbands() != img2.getbands()):

return None

pairs = zip(img1.getdata(), img2.getdata())

if len(img1.getbands()) == 1:

# for gray-scale jpegs

dif = sum(abs(p1 - p2) for p1, p2 in pairs)

else:

dif = sum(abs(c1 - c2) for p1, p2 in pairs for c1, c2 in zip(p1, p2))

ncomponents = img1.size[0] * img1.size[1] * 3

return (dif / 255.0 * 100) / ncomponents # Difference (percentage)

在尝试寻找替代方案时,我发现可以使用Numpy重写此函数:

^{pr2}$

我原以为处理速度会有所提高,但实际上需要更长的时间。除了基础知识之外,我对Numpy没有任何经验,所以我想知道是否有任何方法可以使它更快,例如使用一些不意味着for循环的算法。有什么想法吗?在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值