Python计算两张图片的相似度

举报
wh_bn 发表于 2021/12/15 22:24:21 2021/12/15
【摘要】 代码比较容易,主要的工作是安装相关的包,网络不太好,安装了挺久的时间。 使用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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。