运行截图如下:

这里有几点要注意的:

①对比两张图片的函数SSIM具体是structural_similarity:

Ⅰ:第一个参数和第二个参数是要对比的两张图片;

Ⅱ:参数中有个full,默认为True,如果为True会把两张图的相似部分返回,如果为False就不返回了;

Ⅳ:返回值full为False的时候有2个,一个是mssim浮点型的相似度,1代表2张图一模一样。0代表完全不一样,grad返回两张图片不同的地方类型为ndarray;

②SSIM返回的ndarray里面的值为[0, 1]的float型,而OpenCV的[0, 255]为uint8型,可以通过这样的方式转换:

Ⅰ:diff = (diff * 255).astype("uint8")

③cv2.threshold函数,设置一个阈值和一个颜色,将传入的图片没有达到这个阈值的,转换为这个颜色。

源码如下:

from skimage.metrics import structural_similarity
import cv2
import numpy as npif __name__ == '__main__':before = cv2.imread('./pic/demo1.png')after = cv2.imread('./pic/demo2.png')# Convert images to grayscalebefore_gray = cv2.cvtColor(before, cv2.COLOR_BGR2GRAY)after_gray = cv2.cvtColor(after, cv2.COLOR_BGR2GRAY)# Compute SSIM between two images(score, diff) = structural_similarity(before_gray, after_gray, full=True)print("Image similarity", score)# The diff image contains the actual image differences between the two images# and is represented as a floating point data type in the range [0,1]# so we must convert the array to 8-bit unsigned integers in the range# [0,255] before we can use it with OpenCVdiff = (diff * 255).astype("uint8")# Threshold the difference image, followed by finding contours to# obtain the regions of the two input images that differthresh = cv2.threshold(diff, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1]contours = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)contours = contours[0] if len(contours) == 2 else contours[1]mask = np.zeros(before.shape, dtype='uint8')filled_after = after.copy()for c in contours:area = cv2.contourArea(c)if area > 40:x, y, w, h = cv2.boundingRect(c)cv2.rectangle(before, (x, y), (x + w, y + h), (36, 255, 12), 2)cv2.rectangle(after, (x, y), (x + w, y + h), (36, 255, 12), 2)cv2.drawContours(mask, [c], 0, (0, 255, 0), -1)cv2.drawContours(filled_after, [c], 0, (0, 255, 0), -1)cv2.imshow('before', before)cv2.imshow('after', after)cv2.imshow('diff', diff)cv2.imshow('mask', mask)cv2.imshow('filled after', filled_after)cv2.waitKey(0)

Python笔记-使用SSIM找两张图不同及使用Opencv显示相关推荐

  1. python matplotlib画多个图_python matplotlib模块 如何画两张图出来

    展开全部 python matplotlib模块 如何画两张图出2113来的方法:5261 代码如下所示: import numpy as np import matplotlib.pyplot as ...

  2. OpenCV学习笔记——判断两张图的相似度

    判断两张图的相似度 方法 直方图对比法 ORB算法 实验 1.直方图对比法 参考如何使用OpenCV3直方图方法进行人脸相似度对比 因为我的环境是VS2010+OpenCV2.4.8,所以在原版的基础 ...

  3. python把两张图不同之处差异显示出来

    把两张图不同之处差异显示出来 原讨论帖, https://bbs.csdn.net/topics/396114473 最后找到了帖子的原帖, https://www.cnblogs.com/botoo ...

  4. Android 应用性能优化(5)---用两张图告诉你,为什么你的App会卡顿?

    用两张图告诉你,为什么你的App会卡顿? Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? 知道Android究竟是如何在屏幕上显示我们期望的 ...

  5. MATLAB代码: 合并两张图

    MATLAB 合并两张图,要求大小相同的图,我这里合并两张相同的图. image = imread('docia_one.png') %读取图片 c = [image, image] %图像拼接到矩阵 ...

  6. 两张图搞定IJK源码

    IJK源码两张图就可以搞定,一张是IJK从播放到停止的代码流程图,一张是IJK的线程模型图

  7. Origin使两张图重叠展示在一张图上

    目录 1.先将两张图的坐标轴修改为相同. 2.删去其中一个图的图例.坐标轴等,仅保留曲线.左轴和下轴的刻度线标签.轴线和刻度线均把显示关闭.并用Delete删去坐标轴名称. 3.选中图形,Ctrl+C ...

  8. LaTeX两张图并排显示

    一.需要引入的包 \usepackage{caption} % 图片脚注 \usepackage{graphicx} \usepackage{caption} \usepackage{subfigur ...

  9. LATEX——两张图并列排列/双栏模板中图片通栏并列布局

    LATEX--两张图并列排列/双栏模板中图片通栏并列布局 正常插入图片 并列插入两张图片 双栏模板中图片通栏并列布局1(不同图片使用不同标题,不同编号) 双栏模板中图片通栏并列布局2(不同图片使有不同 ...

最新文章

  1. Mac OS 系统重装U盘制作(DiskMaker X)
  2. 2019诺贝尔物理学奖再度颁向宇宙大爆炸:加拿大瑞士3学者获奖,最年长者已84岁...
  3. B站疯传,一整套Java学习资料,白拿不谢,叫我雷锋!
  4. 零基础也可以实现“机器同传翻译”!
  5. webpack二(以webpack4.x起步)
  6. Android之手机摇一摇震动刷新(支持ListView、GridView、WebView)并生成我的二维码
  7. 【Jenkins】Jenkins : Mac中Jenkins的停止和启动
  8. 使用.NET Core创建服务监视器应用程序
  9. Python——OpenCV形态学处理(膨胀与腐蚀)
  10. 【LeetCode】Combination Sum(组合总和)
  11. 高速计算机的应用领域概括,河北计算机一级考试题-MS模拟试题
  12. 游戏编程--wpe封包教程 (新手必备)
  13. uboot中往s5p6818的emmc刷写内容
  14. 廊坊金彩教育:店铺详情页设计要点
  15. msdn突然无法使用,打开的页面无法正常显示。
  16. Quartz定时任务自学
  17. 银河麒麟V10服务器系统安装教程及注意事项
  18. PTF渗透测试框架使用
  19. 再挤牙膏 2018年英特尔八代酷睿处理器你仍会失望
  20. 更换maven的settings未生效解决办法

热门文章

  1. hdu3689(kmp+dp)
  2. android 回车键事件编程
  3. Python下使用optparse模块实现对多个文件进行统计【二】
  4. 零基础学编程,如何区分C语言和Java?我们到底如何怎么进行选择!
  5. 目前我们再用的即时通讯软件
  6. 女人,就是不适合做IT!
  7. 普通程序员,光靠GitHub打赏就年入70万,要不你也试试
  8. C++高手总结的编程规律
  9. 当实在受不了了,就开干吧!
  10. 服务器漏洞文件被删除漏洞,【华中科技大学 - 漏洞预警】Wordpress = 4.9.6 任意文件删除漏洞...