Wand的文档说,该Image.compare
方法返回一个元组,其中包含差异图像和代表两者之间差异的整数。
问题在于0.6231802821079919
,即使图像相同,此数字也总是返回值为的浮点数!
我只想获取一个值,该值可以告诉我一幅图像与另一幅图像的百分比。
这是我的代码。它实际上比较PDF,但是将每一页都转换为图像,只需在两个参数中输入相同的pdf即可看到返回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中的一个简单示例。它将列出均方根差异,并显示一个以红色突出显示差异的图像。
输入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
谢谢,似乎doc已过时,例如@emcconville说,那么0.02 RMSE差异意味着图像差异约2%?