python opencv实现图像配准与比较


Posted in Python onFebruary 09, 2021

本文实例为大家分享了python opencv实现图像配准与比较的具体代码,供大家参考,具体内容如下

代码 

from skimage import io
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
 
img_path1 = '2_HE_maxarea.png'
img_path2 = '2_IHC_maxarea.png'
 
img1 = io.imread(img_path1)
img2 = io.imread(img_path2)
img1 = np.uint8(img1)
img2 = np.uint8(img2)
 
# find the keypoints and descriptors with ORB
orb = cv.ORB_create()
kp1, des1 = orb.detectAndCompute(img1,None)
kp2, des2 = orb.detectAndCompute(img2,None)
 
# def get_good_match(des1,des2):
#  bf = cv.BFMatcher()
#  matches = bf.knnMatch(des1, des2, k=2)
#  good = []
#  for m, n in matches:
#   if m.distance < 0.75 * n.distance:
#    good.append(m)
#  return good,matches
# goodMatch,matches = get_good_match(des1,des2)
# img3 = cv.drawMatchesKnn(img1,kp1,img2,kp2,matches[:20],None,flags=2)
 
# create BFMatcher object
bf = cv.BFMatcher(cv.NORM_HAMMING, crossCheck=True)
# Match descriptors.
matches = bf.match(des1,des2)
# Sort them in the order of their distance.
matches = sorted(matches, key = lambda x:x.distance)
# Draw first 20 matches.
img3 = cv.drawMatches(img1,kp1,img2,kp2,matches[:20],None, flags=2)
 
 
goodMatch = matches[:20]
if len(goodMatch) > 4:
 ptsA= np.float32([kp1[m.queryIdx].pt for m in goodMatch]).reshape(-1, 1, 2)
 ptsB = np.float32([kp2[m.trainIdx].pt for m in goodMatch]).reshape(-1, 1, 2)
 ransacReprojThreshold = 4
 H, status =cv.findHomography(ptsA,ptsB,cv.RANSAC,ransacReprojThreshold);
 #其中H为求得的单应性矩阵矩阵
 #status则返回一个列表来表征匹配成功的特征点。
 #ptsA,ptsB为关键点
 #cv2.RANSAC, ransacReprojThreshold这两个参数与RANSAC有关
 imgOut = cv.warpPerspective(img2, H, (img1.shape[1],img1.shape[0]),flags=cv.INTER_LINEAR + cv.WARP_INVERSE_MAP)
 
# 叠加配准变换图与基准图
rate = 0.5
overlapping = cv.addWeighted(img1, rate, imgOut, 1-rate, 0)
io.imsave('HE_2_IHC.png', overlapping)
err = cv.absdiff(img1,imgOut) 
 
# 显示对比
plt.subplot(221)
plt.title('orb')
plt.imshow(img3)
 
plt.subplot(222)
plt.title('imgOut')
plt.imshow(imgOut)
 
plt.subplot(223)
plt.title('overlapping')
plt.imshow(overlapping)
 
plt.subplot(224)  
plt.title('diff') 
plt.imshow(err)
 
plt.show()

结果:

python opencv实现图像配准与比较

python opencv实现图像配准与比较

python opencv实现图像配准与比较

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用Python标准库中的wave模块绘制乐谱的简单教程
Mar 30 Python
在Django中创建第一个静态视图
Jul 15 Python
在Django的session中使用User对象的方法
Jul 23 Python
python shell根据ip获取主机名代码示例
Nov 25 Python
wx.CheckBox创建复选框控件并响应鼠标点击事件
Apr 25 Python
Python 使用 attrs 和 cattrs 实现面向对象编程的实践
Jun 12 Python
python写日志文件操作类与应用示例
Jul 01 Python
在django模板中实现超链接配置
Aug 21 Python
python 下 CMake 安装配置 OPENCV 4.1.1的方法
Sep 30 Python
详解python常用命令行选项与环境变量
Feb 20 Python
python利用tkinter实现图片格式转换的示例
Sep 28 Python
Python实现简单的猜单词
Jun 15 Python
python urllib和urllib3知识点总结
Feb 08 #Python
Python3.9.1中使用match方法详解
Feb 08 #Python
python读取excel数据并且画图的实现示例
Feb 08 #Python
Python爬取某平台短视频的方法
Feb 08 #Python
利用Python批量识别电子账单数据的方法
Feb 08 #Python
Python命令行参数argv和argparse该如何使用
Feb 08 #Python
python 实现Requests发送带cookies的请求
Feb 08 #Python
You might like
php IP及IP段进行访问限制的代码
2008/12/17 PHP
PHP中让curl支持sock5的代码实例
2015/01/21 PHP
php中简单的对称加密算法实现
2017/01/05 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
2017/07/20 PHP
把html页面的部分内容保存成新的html文件的jquery代码
2009/11/12 Javascript
jQuery 学习第六课 实现一个Ajax的TreeView
2010/05/17 Javascript
js操纵跨frame的三级联动select下拉选项实例介绍
2013/05/19 Javascript
moment.js轻松实现获取当前日期是当年的第几周
2015/02/05 Javascript
jQuery读取XML文件内容的方法
2015/03/09 Javascript
基于jQuery实现带动画效果超炫酷的弹出对话框(附源码下载)
2016/02/22 Javascript
js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解
2016/04/01 Javascript
VUEJS实战之利用laypage插件实现分页(3)
2016/06/13 Javascript
微信小程序 获取设备信息 API实例详解
2016/10/02 Javascript
React如何利用相对于根目录进行引用组件详解
2017/10/09 Javascript
实例教学如何写vue插件
2017/11/30 Javascript
Vue2.0系列之过滤器的使用
2018/03/01 Javascript
浅谈Vue render函数在ElementUi中的应用
2018/09/06 Javascript
JavaScript指定断点操作实例教程
2018/09/18 Javascript
详解一个基于react+webpack的多页面应用配置
2019/01/21 Javascript
在Vue项目中用fullcalendar制作日程表的示例代码
2019/08/04 Javascript
vue根据条件不同显示不同按钮的操作
2020/08/04 Javascript
总结30个CSS3选择器
2017/04/13 HTML / CSS
深入浅析HTML5中的article和section的区别
2018/05/15 HTML / CSS
魅力惠奢品线上平台:MEI.COM
2016/11/29 全球购物
如何将一个描述日期或日期/时间的字符串转换为一个Date对象
2015/10/13 面试题
连锁经营管理专业大学生求职信
2013/10/30 职场文书
大学生2014全国两会学习心得体会
2014/03/10 职场文书
地球物理学专业推荐信
2014/09/08 职场文书
授权委托书
2014/09/17 职场文书
基层党组织整改方案
2014/10/25 职场文书
2014年数学教师工作总结
2014/12/03 职场文书
学雷锋感言
2015/08/03 职场文书
优秀共产党员事迹材料2016
2016/02/29 职场文书
学校教代会开幕词
2016/03/04 职场文书
Python实现简单的猜单词
2021/06/15 Python
使用ICOM IC-R9500接收机同时测评十台收音机中波接收性能
2022/05/10 无线电