【发布时间】:2021-03-12 20:16:51
【问题描述】:
The documentation for 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)
【问题讨论】:
-
文档看起来已经过时了。方法应该返回一个 Real 数字作为
result_metric,而不是整数。正如@fmw42 在他的精彩回答中指出的那样,您需要定义要计算的指标。见COMPARE_METRICS
标签: python image-processing imagemagick wand