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字符串替换的2种方法
Nov 30 Python
Python爬虫番外篇之Cookie和Session详解
Dec 27 Python
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
Jan 15 Python
Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围
Jun 25 Python
python UDP(udp)协议发送和接收的实例
Jul 22 Python
Python lxml模块的基本使用方法分析
Dec 21 Python
如何基于python实现脚本加密
Dec 28 Python
如何在sublime编辑器中安装python
May 20 Python
python删除指定列或多列单个或多个内容实例
Jun 28 Python
Python基础教程(一)——Windows搭建开发Python开发环境
Jul 20 Python
python调用百度API实现人脸识别
Nov 17 Python
python numpy中setdiff1d的用法说明
Apr 22 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
Banner程序
2006/10/09 PHP
php笔记之:AOP的应用
2013/04/24 PHP
Zend Framework上传文件重命名的实现方法
2016/11/25 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
2017/06/17 PHP
PHP实现的各类hash算法长度及性能测试实例
2017/08/27 PHP
js中hash和ico的关联分析
2015/02/05 Javascript
js给selected添加options的方法
2015/05/06 Javascript
js 将图片连接转换成base64格式的简单实例
2016/08/10 Javascript
jQuery dataTables与jQuery UI 对话框dialog的使用教程
2016/09/02 Javascript
微信小程序学习之数据处理详解
2017/07/05 Javascript
jQuery 实现图片的依次加载图片功能
2017/07/06 jQuery
关于js中的鼠标事件总结
2017/07/11 Javascript
jquery使用iscorll实现上拉、下拉加载刷新
2017/10/26 jQuery
angular4 JavaScript内存溢出问题
2018/03/06 Javascript
简单通过settimeout看javascript的运行机制
2019/05/10 Javascript
elementUi vue el-radio 监听选中变化的实例代码
2019/06/28 Javascript
推荐下python/ironpython:从入门到精通
2007/10/02 Python
Python常见字典内建函数用法示例
2018/05/14 Python
Python列表生成式与生成器操作示例
2018/08/01 Python
Python可变和不可变、类的私有属性实例分析
2019/05/31 Python
解决yum对python依赖版本问题
2019/07/05 Python
python从list列表中选出一个数和其对应的坐标方法
2019/07/20 Python
Django Form and ModelForm的区别与使用
2019/12/06 Python
python和php学习哪个更有发展
2020/06/17 Python
用于ETL的Python数据转换工具详解
2020/07/21 Python
Django DRF APIView源码运行流程详解
2020/08/17 Python
python输出国际象棋棋盘的实例分享
2020/11/26 Python
StubHub巴西:购买和出售您的门票
2016/07/22 全球购物
Nike荷兰官方网站:Nike.com (NL)
2018/04/19 全球购物
俄罗斯最大的灯具网站:Fandeco
2020/03/14 全球购物
安全事故检讨书
2014/01/18 职场文书
《油菜花开了》教学反思
2014/02/22 职场文书
学生会竞选演讲稿学习部
2014/08/25 职场文书
先进工作者推荐材料
2014/12/23 职场文书
HTML常用标签超详细整理
2022/03/19 HTML / CSS
使用python绘制分组对比柱状图
2022/04/21 Python