python argparse 和opencv模块的组合使用_如何利用Python3和OpenCV对比两张图片的不同,提取差异性...
如何利用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模块
四、运行结果
后记:需要对比的两张图片必须尺寸大小一致,即像素矩阵一致,否则无法对比提取差异性。有问题欢迎留言!
点赞
1
收藏
分享
文章举报
田家大院院士
发布了3 篇原创文章 · 获赞 3 · 访问量 533
私信
关注
python argparse 和opencv模块的组合使用_如何利用Python3和OpenCV对比两张图片的不同,提取差异性...相关推荐
- python argparse 和opencv模块的组合使用_[记录]Python2.7使用argparse模块
# -*- coding: utf8 -*- import argparse #ArgumentParser.add_argument(name or flags-[, action][, nargs ...
- 如何利用Python3和OpenCV对比两张图片的不同,提取差异性
如何利用Python3和OpenCV对比两张图片的不同,提取差异性 导言:通过机器视觉来计算两个图片之间的差异性,可以快速有效辨别文件.图片是否被篡改,也能帮助用户轻松识别钓鱼网站,确保财产安全. 一 ...
- python图像对比_用python实现对比两张图片的不同
from PIL import Image from PIL import ImageChops def compare_images(path_one, path_two, diff_save_lo ...
- python 对比两张图片是否相同
python 对比两张图片是否相同 说明 说明 适用于对比两张图片是否完全相同 需要两张图片的大小完全一致 代码来源于网络,进行微调 from PIL import Image from PIL im ...
- python自带intertool模块找不到_介绍Python中内置的itertools模块
Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数. 首先,我们看看itertools提供的几个"无限"迭代器: >>> import ...
- python模块cv2人脸识别_手把手教你使用OpenCV,Python和深度学习进行人脸识别
使用OpenCV,Python和深度学习进行人脸识别 在本教程中,你将学习如何使用OpenCV,Python和深度学习进行面部识别.首先,我们将简要讨论基于深度学习的面部识别,包括"深度度量 ...
- python下载matplotlib.finance模块_Python pyfinance包_程序模块 - PyPI - Python中文网
PyFinance pyfinance是一个python包,用于投资管理和安全回报分析. 它是对面向量化金融的现有软件包的补充,例如pyfolio, 熊猫数据读取器,以及fecon235 支持巨蟒3. ...
- python动态加载模块有什么用_人生苦短我用python(02)动态加载模块
继第一期[人生苦短我用Python系列专栏]发布后,深受广大睿普迷的一致好评,经常问小普第二期什么时候出呀?好期待~ 来来来小普这就呈上第二期[02动态加载模块] 错过了第一期的小伙伴们可以点此穿越哦 ...
- python 查找函数所在模块和文件位置_查看python的模块和函数帮助文档方法
python的一个优势是有着大量自带和在线的模块(module)资源,可以提供丰富的功能,在使用这些模块的时候,如果每次都去网站找在线文档会过于耗费时间,结果也不一定准确.因此这里介绍下python自 ...
最新文章
- SVG.js 笔记 (一)
- LAMP--Apache 禁止指定 user_agent
- ubuntu deb package install
- VMware虚拟机安装Ubuntu
- android错误-android.util.AndroidRuntimeException:You cannot combine custom titles with other title
- 【原创】关于移动铁通某些网站打不开的问题
- delete响应服务器,rest-RESTful-DELETE响应主体应包含什么
- python-study-09
- 投射式触摸屏自电容与互电容工作原理基础(未完待续)
- python tkinter 图片_如何用python tkinter插入显示图片?
- 虚拟机安装或卸载时,无法打开注册表项问题
- [VS2010]读秀资源咨询法下载器:逸雨清风读秀批量下载 V5.20 2015-5-20
- @Java web程序员,在保留现场,服务不重启的情况下,执行我们的调试代码(JSP 方式)
- FOC:在MCU上检验Clark和Park坐标变换是否正确
- vlc 控件属性和方法
- php cpu占有率过高怎么办,system占用cpu过高怎么办
- python-cmd安装环境
- 2000~2009十大创业新模式
- echarts横向倒叙柱状图
- 插件启动so库加载原理及实现