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 re正则表达式模块(Regular Expression)
Jul 16 Python
一看就懂得Python的math模块
Oct 21 Python
python实现银联支付和支付宝支付接入
May 07 Python
11个Python3字典内置方法大全与示例汇总
May 13 Python
Python高级特性 切片 迭代解析
Aug 23 Python
python的等深分箱实例
Nov 22 Python
Python中base64与xml取值结合问题
Dec 22 Python
将tf.batch_matmul替换成tf.matmul的实现
Jun 18 Python
Python把图片转化为pdf代码实例
Jul 28 Python
Python读取xlsx数据生成图标代码实例
Aug 12 Python
利用python做表格数据处理
Apr 13 Python
python实战之90行代码写个猜数字游戏
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
php数组(array)输出的三种形式详解
2013/06/05 PHP
php获取客户端IP及URL的方法示例
2017/02/03 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
2019/11/26 PHP
[转]JS宝典学习笔记
2007/02/07 Javascript
基于jquery的设置页面文本框 只能输入数字的实现代码
2011/04/19 Javascript
jquery插件unobtrusive实现片段式加载
2015/06/15 Javascript
JavaScript处理解析JSON数据过程详解
2015/09/11 Javascript
javascript实现动态标签云
2015/10/16 Javascript
轻松掌握JavaScript代理模式
2016/08/26 Javascript
js实现键盘自动打字效果
2016/12/23 Javascript
JQuery.dataTables表格插件添加跳转到指定页
2017/06/09 jQuery
微信小程序之绑定点击事件实例详解
2017/07/07 Javascript
vue proxyTable 接口跨域请求调试的示例
2017/09/12 Javascript
让网站自动生成章节目录索引的多个js代码
2018/01/07 Javascript
js前端如何写一个精确的倒计时代码
2019/10/25 Javascript
JQuery中的常用事件、对象属性与使用方法分析
2019/12/23 jQuery
taro 实现购物车逻辑的实例代码
2020/06/05 Javascript
详解Python Socket网络编程
2016/01/05 Python
python抓取网页内容并进行语音播报的方法
2018/12/24 Python
python实现连连看辅助(图像识别)
2020/03/25 Python
Django模板导入母版继承和自定义返回Html片段过程解析
2019/09/18 Python
Python如何实现邮件功能
2020/05/27 Python
详细分析Python垃圾回收机制
2020/07/01 Python
Python数据可视化实现漏斗图过程图解
2020/07/20 Python
Python如何在bool函数中取值
2020/09/21 Python
python 通过pip freeze、dowload打离线包及自动安装的过程详解(适用于保密的离线环境
2020/12/14 Python
HTML5未来发展趋势
2016/02/01 HTML / CSS
电信专业应届生自荐信
2013/09/28 职场文书
保险专业自荐信范文
2014/02/20 职场文书
党章培训心得体会
2014/09/04 职场文书
2015年党性分析材料
2014/12/19 职场文书
公司与个人合作协议书
2016/03/19 职场文书
Python Numpy之linspace用法说明
2021/04/17 Python
浅谈如何提高PHP代码质量之单元测试
2021/05/28 PHP
python读取mnist数据集方法案例详解
2021/09/04 Python
Python tensorflow卷积神经Inception V3网络结构
2022/05/06 Python