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
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