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)