用于比较python中的图像的python代码

sta*_*ion 6 python image-comparison image-processing computer-vision python-2.7

我正在研究一个项目,其中我需要比较两个图像.任何人都可以帮我一个方法来做到这一点.通过图像的方式是一个软件的截图.我想检查两个图像是否相同,包括图像中显示的数字和字母(软件的屏幕截图).

NIl*_*rma 8

有以下方法进行适当的比较.

  • 首先是均方根差异#

为了测量两个图像的相似程度,您可以计算图像之间差异的均方根(RMS)值.如果图像完全相同,则该值为零.以下函数使用差函数,然后根据结果图像的直方图计算RMS值.

# Example: File: imagediff.py

import ImageChops
import math, operator

def rmsdiff(im1, im2):
    "Calculate the root-mean-square difference between two images"

    h = ImageChops.difference(im1, im2).histogram()

    # calculate rms
    return math.sqrt(reduce(operator.add,
        map(lambda h, i: h*(i**2), h, range(256))
    ) / (float(im1.size[0]) * im1.size[1]))
Run Code Online (Sandbox Code Playgroud)
  • 另一个是精确比较#

确定两个图像是否具有完全相同内容的最快方法是获得两个图像之间的差异,然后计算该图像中非零区域的边界框.如果图像相同,则差异图像中的所有像素均为零,并且边界框函数返回"无".

import ImageChops

def equal(im1, im2):
    return ImageChops.difference(im1, im2).getbbox() is None
Run Code Online (Sandbox Code Playgroud)


jte*_*ace 6

我正在维护一个名为pyssim的Python库,它使用结构相似性(SSIM)方法来比较两个图像.

它没有python绑定,但是perceptualdiff程序在比较两个图像时也很棒 - 而且非常快.