Python计算两张图片的相似度
【摘要】
代码比较容易,主要的工作是安装相关的包,网络不太好,安装了挺久的时间。
使用pip install 安装,如果安装不成功,把包的下载地址复制后使用迅雷进行下载。
然后再运行pip instll "下载包的路径",就可以了。不过迅雷会自动得把whl文件加上zip的后缀,在下载好之后需要手动修改。
其他没有什么问题了。
&...
代码比较容易,主要的工作是安装相关的包,网络不太好,安装了挺久的时间。
使用pip install 安装,如果安装不成功,把包的下载地址复制后使用迅雷进行下载。
然后再运行pip instll "下载包的路径",就可以了。不过迅雷会自动得把whl文件加上zip的后缀,在下载好之后需要手动修改。
其他没有什么问题了。
# coding=utf-8
# 导入python包
from skimage.measure import compare_ssim as ssim
import matplotlib.pyplot as plt
import numpy as np
import cv2
def mse(imageA, imageB):
# 计算两张图片的MSE指标
err = np.sum((imageA.astype("float") - imageB.astype("float")) ** 2)
err /= float(imageA.shape[0] * imageA.shape[1])
# 返回结果,该值越小越好
return err
'''
SSIM 的范围是[-1,1]
当SSIM=-1时表示两张图片完全不相似
当SSIM= 1时表示两张图片非常相似。
即该值越接近1说明两张图片越相似。
'''
def compare_images(imageA, imageB, title):
# 分别计算输入图片的MSE和SSIM指标值的大小
m = mse(imageA, imageB)
s = ssim(imageA, imageB)
print("%s MSE: %.2f, SSIM: %.2f" % (title,m, s))
return
# 创建figure
fig = plt.figure(title)
plt.suptitle("MSE: %.2f, SSIM: %.2f" % (m, s))
print("%s MSE: %.2f, SSIM: %.2f" % (title,m, s))
# 显示第一张图片
ax = fig.add_subplot(1, 2, 1)
plt.imshow(imageA, cmap = plt.cm.gray)
plt.axis("off")
# 显示第二张图片
ax = fig.add_subplot(1, 2, 2)
plt.imshow(imageB, cmap = plt.cm.gray)
plt.axis("off")
plt.tight_layout()
plt.show()
# 读取图片
a1_image = cv2.imread(r"a1.jpg")
a2_image = cv2.imread(r"a2.jpg")
a3_image = cv2.imread(r"a3.jpg")
a4_image = cv2.imread(r"a4.jpg")
a5_image = cv2.imread(r"a5.jpg")
# 将彩色图转换为灰度图
a1 = cv2.cvtColor(a1_image, cv2.COLOR_BGR2GRAY)
a2 = cv2.cvtColor(a2_image, cv2.COLOR_BGR2GRAY)
a3 = cv2.cvtColor(a3_image, cv2.COLOR_BGR2GRAY)
a4 = cv2.cvtColor(a4_image, cv2.COLOR_BGR2GRAY)
a5 = cv2.cvtColor(a5_image, cv2.COLOR_BGR2GRAY)
'''
# 初始化figure对象
fig = plt.figure("Images")
images = ("a1", a1), ("a2", a2), ("a3", a3)
# 遍历每张图片
for (i, (name, image)) in enumerate(images):
# 显示图片
ax = fig.add_subplot(1, 3, i + 1)
ax.set_title(name)
plt.imshow(image, cmap = plt.cm.gray)
plt.axis("off")
plt.tight_layout()
#plt.show()
'''
# 比较图片
compare_images(a1, a1, "a1 vs a1")
compare_images(a1, a2, "a1 vs a2")
compare_images(a1, a3, "a1 vs a3")
compare_images(a2, a3, "a2 vs a3")
compare_images(a4, a4, "a4 vs a4")
compare_images(a4, a5, "a4 vs a5")
结果:
a1 vs a1 MSE: 0.00, SSIM: 1.00
a1 vs a2 MSE: 7981.40, SSIM: 0.14
a1 vs a3 MSE: 7959.42, SSIM: 0.14
a2 vs a3 MSE: 963.59, SSIM: 0.86
a4 vs a4 MSE: 0.00, SSIM: 1.00
a4 vs a5 MSE: 33.68, SSIM: 0.98
文章来源: blog.csdn.net,作者:fengda2870,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/fengda2870/article/details/101109339
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)