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 相关文章推荐
Win7下搭建python开发环境图文教程(安装Python、pip、解释器)
May 17 Python
Python序列操作之进阶篇
Dec 08 Python
Python 异常处理的实例详解
Sep 11 Python
Windows下PyCharm安装图文教程
Aug 27 Python
实例讲解python中的序列化知识点
Oct 08 Python
说说如何遍历Python列表的方法示例
Feb 11 Python
十分钟搞定pandas(入门教程)
Jun 21 Python
Python 继承,重写,super()调用父类方法操作示例
Sep 29 Python
使用turtle绘制五角星、分形树
Oct 06 Python
Python正则表达式急速入门(小结)
Dec 16 Python
pytorch 数据处理:定义自己的数据集合实例
Dec 31 Python
Python处理PDF与CDF实例
Feb 26 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+mysql一个名片库程序
2006/10/09 PHP
PHP时间格式控制符对照表分享
2013/07/23 PHP
PHP抓取、分析国内视频网站的视频信息工具类
2014/04/02 PHP
php实现通用的从数据库表读取数据到数组的函数实例
2015/03/21 PHP
PHP读取配置文件类实例(可读取ini,yaml,xml等)
2015/07/28 PHP
使用PHP生成图片的缩略图的方法
2015/08/18 PHP
PHP类型约束用法示例
2016/09/28 PHP
常用PHP封装分页工具类
2017/01/14 PHP
PHP保存Base64图片base64_decode的问题整理
2019/11/04 PHP
IE8 原生JSON支持
2009/04/13 Javascript
window.parent调用父框架时 ie跟火狐不兼容问题
2009/07/30 Javascript
javascript instanceof 与typeof使用说明
2010/01/11 Javascript
让JavaScript拥有类似Lambda表达式编程能力的方法
2010/09/12 Javascript
JS获取浏览器版本及名称实现函数
2013/04/02 Javascript
js基础知识(公有方法、私有方法、特权方法)
2015/11/06 Javascript
javascript HTML+CSS实现经典橙色导航菜单
2016/02/16 Javascript
BootStrap初学者对弹出框和进度条的使用感觉
2016/06/27 Javascript
Bootstrap被封装的弹层
2016/07/20 Javascript
js控制台输出的方法(详解)
2016/11/26 Javascript
分享bootstrap学习笔记心得(组件及其属性)
2017/01/11 Javascript
基于jQuery代码实现圆形菜单展开收缩效果
2017/02/13 Javascript
layui自定义插件citySelect实现省市区三级联动选择
2019/07/26 Javascript
[01:02]DOTA2上海特锦赛SHOWOPEN
2016/03/25 DOTA
Python通过Django实现用户注册和邮箱验证功能代码
2017/12/11 Python
python运用sklearn实现KNN分类算法
2019/10/16 Python
解决python3.6用cx_Oracle库连接Oracle的问题
2020/12/07 Python
从Pytorch模型pth文件中读取参数成numpy矩阵的操作
2021/03/04 Python
纯CSS3编写的的精美动画进度条(无flash/无图像/无脚本/附源码)
2013/01/07 HTML / CSS
兰蔻加拿大官方网站:Lancome加拿大
2016/08/05 全球购物
俄罗斯香水和化妆品在线商店:Aroma-butik
2020/02/28 全球购物
正宗的澳大利亚Ugg靴子零售商:UGG Express
2020/04/19 全球购物
金属材料工程毕业生个人的自我评价
2013/11/28 职场文书
大学生职业规划前言模板
2013/12/27 职场文书
打架检讨书100字
2014/01/19 职场文书
Maven学习----Maven安装与环境变量配置教程
2021/06/29 Java/Android
Springboot使用Spring Data JPA实现数据库操作
2021/06/30 Java/Android