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 爬虫爬取指定博客的所有文章
Feb 17 Python
基础的十进制按位运算总结与在Python中的计算示例
Jun 28 Python
详解Python的collections模块中的deque双端队列结构
Jul 07 Python
Python 中的with关键字使用详解
Sep 11 Python
用python写一个windows下的定时关机脚本(推荐)
Mar 21 Python
使用pygame模块编写贪吃蛇的实例讲解
Feb 05 Python
Python中矩阵创建和矩阵运算方法
Aug 04 Python
python如何实现一个刷网页小程序
Nov 27 Python
浅谈django2.0 ForeignKey参数的变化
Aug 06 Python
Python中的 ansible 动态Inventory 脚本
Jan 19 Python
Python实现验证码识别
Jun 15 Python
Python猫眼电影最近上映的电影票房信息
Sep 18 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下用cookie统计用户访问网页次数的代码
2010/05/09 PHP
PHP5.5安装PHPRedis扩展及连接测试方法
2017/01/22 PHP
function foo的原型与prototype属性解惑
2010/11/19 Javascript
JS中获取数据库中的值的方法
2013/07/14 Javascript
js中的caller和callee属性介绍和例子
2014/06/07 Javascript
AngularJS创建自定义指令的方法详解
2016/11/03 Javascript
Angular 2 ngForm中的ngModel、[ngModel]和[(ngModel)]的写法
2017/06/29 Javascript
Vue2 SSR渲染根据不同页面修改 meta
2017/11/20 Javascript
JS实现简单的星期格式转换功能示例
2018/07/23 Javascript
实现elementUI表单的全局验证的方法步骤
2019/04/29 Javascript
Vue项目实现换肤功能的一种方案分析
2019/08/28 Javascript
React路由鉴权的实现方法
2019/09/05 Javascript
js cavans实现静态滚动弹幕
2020/05/21 Javascript
[00:31]DOTA2上海特级锦标赛 Fnatic战队宣传片
2016/03/04 DOTA
windows系统中python使用rar命令压缩多个文件夹示例
2014/05/06 Python
基于DATAFRAME中元素的读取与修改方法
2018/06/08 Python
浅谈python脚本设置运行参数的方法
2018/12/03 Python
Python GUI学习之登录系统界面篇
2019/08/21 Python
Python如何使用PIL Image制作GIF图片
2020/05/16 Python
如何在sublime编辑器中安装python
2020/05/20 Python
python dir函数快速掌握用法技巧
2020/12/09 Python
Python用requests库爬取返回为空的解决办法
2021/02/21 Python
突袭HTML5之Javascript API扩展1—Web Worker异步执行及相关概述
2013/01/31 HTML / CSS
用canvas做一个DVD待机动画的实现代码
2019/04/12 HTML / CSS
html5 制作地图当前定位箭头的方法示例
2020/01/10 HTML / CSS
伊利莎白雅顿官网:Elizabeth Arden
2016/10/10 全球购物
菲律宾最大的网上花店和礼品店:PhilFlower.com
2018/02/09 全球购物
C#中的验证控件有几种
2014/03/08 面试题
个人简历自我评价
2014/01/06 职场文书
雪山饭庄的创业计划书范文
2014/01/18 职场文书
机械设计毕业生自荐信
2014/02/02 职场文书
优秀共产党员先进事迹材料
2014/05/06 职场文书
2014年应急工作总结
2014/12/11 职场文书
2015年大学迎新工作总结
2015/07/16 职场文书
2016同学毕业寄语大全
2015/12/04 职场文书
详细了解java监听器和过滤器
2021/07/09 Java/Android