如何利用Python3和OpenCV对比两张图片的不同,提取差异性

导言:通过机器视觉来计算两个图片之间的差异性,可以快速有效辨别文件、图片是否被篡改,也能帮助用户轻松识别钓鱼网站,确保财产安全。

一、所需模块

pip install --upgrade scikit-image
pip install --upgrade imutils

二、Python实现

# import the necessary packages
from skimage.measure import compare_ssim
import argparse
import imutils
import cv2# construct the argument parse and parse the arguments
ap = argparse.ArgumentParser()
ap.add_argument("-f", "--first", required=True,help="first input image")
ap.add_argument("-s", "--second", required=True,help="second")
args = vars(ap.parse_args())# load the two input images
imageA = cv2.imread(args["first"])
imageB = cv2.imread(args["second"])# convert the images to grayscale
grayA = cv2.cvtColor(imageA, cv2.COLOR_BGR2GRAY)
grayB = cv2.cvtColor(imageB, cv2.COLOR_BGR2GRAY)# compute the Structural Similarity Index (SSIM) between the two
# images, ensuring that the difference image is returned
(score, diff) = compare_ssim(grayA, grayB, full=True)
diff = (diff * 255).astype("uint8")
print("SSIM: {}".format(score))# threshold the difference image, followed by finding contours to
# obtain the regions of the two input images that differ
thresh = cv2.threshold(diff, 0, 255,cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1]
cnts = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(cnts)# loop over the contours
for c in cnts:# compute the bounding box of the contour and then draw the# bounding box on both input images to represent where the two# images differ(x, y, w, h) = cv2.boundingRect(c)cv2.rectangle(imageA, (x, y), (x + w, y + h), (0, 0, 255), 2)cv2.rectangle(imageB, (x, y), (x + w, y + h), (0, 0, 255), 2)# show the output images
cv2.imshow("Original", imageA)
cv2.imshow("Modified", imageB)
cv2.imshow("Diff", diff)
cv2.imshow("Thresh", thresh)
cv2.waitKey(0)

三、运行代码

如下图所示,cmd打开电脑终端,输入运行参数(即图片存储路径),Enter键运行。具体方法见上一篇博文:如何使用Argparse模块

四、运行结果

后记:需要对比的两张图片必须尺寸大小一致,即像素矩阵一致,否则无法对比提取差异性。有问题欢迎留言!

如何利用Python3和OpenCV对比两张图片的不同,提取差异性相关推荐

  1. python argparse 和opencv模块的组合使用_如何利用Python3和OpenCV对比两张图片的不同,提取差异性...

    如何利用Python3和OpenCV对比两张图片的不同,提取差异性 导言:通过机器视觉来计算两个图片之间的差异性,可以快速有效辨别文件.图片是否被篡改,也能帮助用户轻松识别钓鱼网站,确保财产安全. 一 ...

  2. python图像对比_用python实现对比两张图片的不同

    from PIL import Image from PIL import ImageChops def compare_images(path_one, path_two, diff_save_lo ...

  3. python 对比两张图片是否相同

    python 对比两张图片是否相同 说明 说明 适用于对比两张图片是否完全相同 需要两张图片的大小完全一致 代码来源于网络,进行微调 from PIL import Image from PIL im ...

  4. 对比两张图片的MD5值

    图片上传的时候,通过对比两张图片的MD5值,判断图片是否上传成功. package com.kedacom.testdemo.javaTest;import java.io.File; import ...

  5. python对比两张图片找不同

    目录 第一种 第二种 第一种 # 引用图片库 from PIL import Image # 打开图片 imgA = Image.open('xxx1.jpg<要对比图片的名称及目录>') ...

  6. Opencv查找两张图片不同的部分以及图片中特定的像素替换

    Opencv查找两张图片不同的部分以及图片中特定的像素替换 Opencv识别两张图片的不同部分demo: import cv2 import numpy as np from matplotlib i ...

  7. 使用opencv查找两张图片不同的部分

    简介 有一款游戏叫<大家一起来找茬>不知道大家有没有玩过,就是给出2张相似图片,在规定的时间内找出图片上有几处不同并标记出来.本文将介绍如何通过opencv替代肉眼快速找出准确的答案. 材 ...

  8. 对比两张图片的相似度

    1.cosin相似度(余弦相似度) from PIL import Image from numpy import average, linalg, dotdef get_thumbnail(imag ...

  9. Haclon和c#对比两张图片差异

    haclon源码 read_image (Image, 'C:/Users/bayinglong/Desktop/搜狗截图20181206101404.png') read_image (Image1 ...

最新文章

  1. 剑指offer:反转链表 python实现
  2. JS设置浏览器URL,任意定制,安全可靠
  3. excel 平滑滚动_Excel怎么学 | 图表实战,销售数据的不同表达方式
  4. Python基础语法学习(字符串)
  5. 修改3389端口为3389端口
  6. 就等android了
  7. error C2360: 参数初始化操作由“case”标签跳过
  8. 计算机培训中学语文研修计划,初中语文个人研修计划书
  9. 【转】gem install libv8 错误
  10. mysql中的函数与存储过程
  11. EasyUI框架04——treegrid
  12. 中美大学生阅读书单公布:对比结果惊到你了吗?
  13. 希望从今往后,是日积月累的努力,而不是由于心血来潮而半途而废
  14. 三款新品重磅齐发!汉高亮相2021中国国际纺织面料及辅料(秋冬)博览会
  15. 配置Windows系统的IP地址为静态IP
  16. CSP201609-3(炉石传说)(Java 100分)(只有78行代码)
  17. python判断网络连通性_Python测试网络连通性示例【基于ping】
  18. [转]ESMTP的三个认证方式: CRAM-MD5 PLAIN和LOGIN
  19. VL813-Q7威锋一出四HUB芯片方案
  20. MySQL页面打捞工具使用方法

热门文章

  1. 电容的充放电过程及应用
  2. python web 开发从入门到精通 pdf,Python编程从入门到精通 PDF包下载
  3. 从零搭建gitlabci环境
  4. 五大优质电子阅读APP推荐 为你找到阅读好“搭档”
  5. 金庸群侠传HTML5源码,【金庸群侠传】网金单机版网游单机怀旧一键端
  6. 使用本地服务器打开html文件
  7. TutorABC跨界合作《挑战吧太空》与观众一起见证“太空C计划”志愿者非凡挑战
  8. 代码动态设置tabLayout 导航条宽度
  9. 手机python编程软件西西网-14.python-CS编程
  10. 在Optimus Mini 3上显示视频