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 文件与目录操作
Dec 24 Python
探究python中open函数的使用
Mar 01 Python
Python基础教程之浅拷贝和深拷贝实例详解
Jul 15 Python
python使用fork实现守护进程的方法
Nov 16 Python
Pandas过滤dataframe中包含特定字符串的数据方法
Nov 07 Python
python将处理好的图像保存到指定目录下的方法
Jan 10 Python
查看Python依赖包及其版本号信息的方法
Aug 13 Python
Python3 实现爬取网站下所有URL方式
Jan 16 Python
快速查找Python安装路径方法
Feb 06 Python
使用Pyhton 分析酒店针孔摄像头
Mar 04 Python
不到20行实现Python代码即可制作精美证件照
Apr 24 Python
PyCharm+PyQt5+QtDesigner配置详解
Aug 12 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扩展编写点滴 技巧收集
2010/03/09 PHP
PHP判断远程图片或文件是否存在的实现代码
2014/02/20 PHP
Yii实现MySQL多数据库和读写分离实例分析
2014/12/03 PHP
ThinkPHP删除栏目(实现批量删除栏目)
2017/06/21 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
详解Laravel服务容器的绑定与解析
2019/11/05 PHP
JQuery从头学起第二讲
2010/07/04 Javascript
基于jQuery的图片左右无缝滚动插件
2012/05/23 Javascript
基于jquery的可多选的下拉列表框
2012/07/20 Javascript
js 调用父窗口的具体实现代码
2013/07/15 Javascript
简介AngularJS中$http服务的用法
2016/02/06 Javascript
关于Javascript中defer和async的区别总结
2016/09/20 Javascript
原生javascript实现图片放大镜效果
2017/01/18 Javascript
js css3实现图片拖拽效果
2017/03/04 Javascript
jQuery操作之效果详解
2017/05/19 jQuery
JS 调试中常见的报错问题解决方法
2017/05/20 Javascript
jquery插件canvaspercent.js实现百分比圆饼效果
2017/07/18 jQuery
详解最新vue-cli 2.9.1的webpack存在问题
2017/12/16 Javascript
webpack多入口多出口的实现方法
2018/08/17 Javascript
vant 解决tab切换插件标题样式自定义的问题
2020/11/13 Javascript
详解如何在vue+element-ui的项目中封装dialog组件
2020/12/11 Vue.js
python实现将pvr格式转换成pvr.ccz的方法
2015/04/28 Python
Python中threading模块join函数用法实例分析
2015/06/04 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
2019/07/06 Python
Python嵌套函数,作用域与偏函数用法实例分析
2019/12/26 Python
keras之权重初始化方式
2020/05/21 Python
html5移动端自适应布局的实现
2020/04/15 HTML / CSS
汉森冲浪板:Hansen Surfboards
2018/05/19 全球购物
Feelunique澳大利亚:欧洲的化妆品零售电商
2019/12/18 全球购物
理财投资建议书
2014/03/12 职场文书
班主任经验交流会主持词
2014/04/01 职场文书
八项规定个人对照检查材料思想汇报
2014/09/25 职场文书
2015年外联部工作总结
2015/04/03 职场文书
2015年度优秀员工获奖感言
2015/07/31 职场文书
煤矿安全学习心得体会
2016/01/18 职场文书
Python学习之包与模块详解
2022/03/19 Python