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输出9*9乘法表的方法
May 25 Python
Python实现栈的方法
May 26 Python
初探TensorFLow从文件读取图片的四种方式
Feb 06 Python
用Python将结果保存为xlsx的方法
Jan 28 Python
对pyqt5多线程正确的开启姿势详解
Jun 14 Python
Python Django实现layui风格+django分页功能的例子
Aug 29 Python
Python使用configparser库读取配置文件
Feb 22 Python
在django项目中导出数据到excel文件并实现下载的功能
Mar 13 Python
django ListView的使用 ListView中获取url中的参数值方式
Mar 27 Python
使用Python实现批量ping操作方法
May 06 Python
Python selenium环境搭建实现过程解析
Sep 08 Python
Python爬虫自动化爬取b站实时弹幕实例方法
Jan 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
windows xp下安装pear
2006/12/02 PHP
PHP5下$_SERVER变量不再受magic_quotes_gpc保护的弥补方法
2012/10/31 PHP
Yii 快速,安全,专业的PHP框架
2014/09/03 PHP
php进行md5加密简单实例方法
2019/09/19 PHP
仿服务器端脚本方式的JS模板实现方法
2007/04/27 Javascript
Extjs学习笔记之四 工具栏和菜单
2010/01/07 Javascript
JavaScript中的document.referrer在各种浏览器测试结果
2014/07/18 Javascript
js实现简单随机抽奖的方法
2015/01/27 Javascript
超赞的jQuery图片滑块动画特效代码汇总
2016/01/25 Javascript
轻松搞定jQuery.noConflict()
2016/02/15 Javascript
jquery组件WebUploader文件上传用法详解
2020/10/23 Javascript
微信小程序 this和that详解及简单实例
2017/02/13 Javascript
关于vue-router的那些事儿
2018/05/23 Javascript
vue.js 2.0实现简单分页效果
2019/07/29 Javascript
详解将微信小程序接口Promise化并使用async函数
2019/08/05 Javascript
在Vue项目中使用Typescript的实现
2019/12/19 Javascript
Vue中点击active并第一个默认选中功能的实现
2020/02/24 Javascript
Python 时间处理datetime实例
2008/09/06 Python
python实现巡检系统(solaris)示例
2014/04/02 Python
Python中属性和描述符的正确使用
2016/08/23 Python
异步任务队列Celery在Django中的使用方法
2018/06/07 Python
Python实现FM算法解析
2019/06/18 Python
python实现windows倒计时锁屏功能
2019/07/30 Python
Python线程条件变量Condition原理解析
2020/01/20 Python
利用html5 canvas破解简单验证码及getImageData接口应用
2013/01/25 HTML / CSS
小天鹅官方商城:LittleSwan
2017/06/16 全球购物
美国最大的无人机经销商:DroneNerds
2018/03/20 全球购物
团员学习总结的自我评价范文
2013/10/14 职场文书
2014年两会学习心得体会
2014/03/10 职场文书
公司总经理任命书
2014/06/05 职场文书
质量月口号
2014/06/20 职场文书
大学生个人学习总结
2015/02/15 职场文书
医院见习总结
2015/06/24 职场文书
七年级生物教学反思
2016/02/20 职场文书
python基于tkinter实现gif录屏功能
2021/05/19 Python
vue组件冲突之引用另一个组件出现组件不显示的问题
2022/04/13 Vue.js