Wand/ImageMagick 比较方法总是 returns 相同的浮点数

Wand/ImageMagick compare method always returns same float number

The documentation for Wand,表示Image.compare方法returns一个包含差异图像的元组和表示它们之间差异的整数。

问题是这个数字总是 returns 一个值为 0.6231802821079919 的浮点数,即使图像是相同的!

我只想得到一个值,告诉我图像与另一个图像的差异百分比。

这是我的代码。它实际上是比较 PDF,但将每个页面转换为图像,只需在两个参数中输入相同的 pdf 即可看到它 returns 0.6231802821079919.

我可以用这个号码做什么?

from wand.image import Image

def get_pdf_difference(control_pdf, test_pdf):
    with Image(filename=control_pdf, format='pdf') as control:
        with Image(filename=test_pdf, format='pdf') as test:
            control.format = 'png'
            test.format = 'png'
            if len(control.sequence) != len(test.sequence):
                raise AttributeError('PDFs are of different length')
            final_diff = 0
            for i, control_page in enumerate(control.sequence):
                test_page = test.sequence[i]
                #Docs gives an example doing this but not changing anything
                #control_page.fuzz = control_page.quantum_range * 0.20
                result_image, result_metric = control_page.compare(test_page)
                final_diff += result_metric
            return final_diff/len(control.sequence)

diff = get_pdf_difference('test.pdf', 'test.pdf')
print(diff)

这是 Python Wand 中的一个简单示例。它将列出 rmse 差异并显示图像,其中差异以红色突出显示。

输入 1:

输入 2:

from wand.image import Image
from wand.display import display

with Image(filename='img1.jpg') as bimg:
    with Image(filename='img2.jpg') as fimg:
        bimg.fuzz = 0.25*bimg.quantum_range
        bimg.artifacts['compare:highlight-color'] = 'red'
        bimg.artifacts['compare:lowlight-color'] = 'transparent'
        diff_img, diff_val =  bimg.compare(fimg, 'root_mean_square')
        print(diff_val)
        with diff_img:
            diff_img.save(filename='img1_img2_diff.jpg')
            display(diff_img)

均方根误差:
0.0238380675979382

差异图像:


现在用同一张图片 1 重复。

from wand.image import Image
from wand.display import display

with Image(filename='img1.jpg') as bimg:
    with Image(filename='img1.jpg') as fimg:
        bimg.fuzz = 0.25*bimg.quantum_range
        bimg.artifacts['compare:highlight-color'] = 'red'
        bimg.artifacts['compare:lowlight-color'] = 'transparent'
        diff_img, diff_val =  bimg.compare(fimg, 'root_mean_square')
        print(diff_val)
        with diff_img:
            diff_img.save(filename='img1_img2_diff.jpg')
            display(diff_img)

RMSE 差异:

0.0