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访问系统环境变量的方法
Apr 29 Python
深入浅析Python中join 和 split详解(推荐)
Jun 30 Python
python函数的5种参数详解
Feb 24 Python
Python 实现数据库(SQL)更新脚本的生成方法
Jul 09 Python
Django 生成登陆验证码代码分享
Dec 12 Python
python2.7安装图文教程
Mar 13 Python
浅谈numpy数组中冒号和负号的含义
Apr 18 Python
Python pyinotify模块实现对文档的实时监控功能方法
Oct 13 Python
Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析
Mar 23 Python
使用pth文件添加Python环境变量方式
May 26 Python
用python写PDF转换器的实现
Oct 29 Python
pytorch 中nn.Dropout的使用说明
May 20 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 cli模式学习(PHP命令行模式)
2013/06/03 PHP
AJAX的跨域访问-两种有效的解决方法介绍
2013/06/22 PHP
PHP分页效率终结版(推荐)
2013/07/01 PHP
Linux系统下php获得系统分区信息的方法
2015/03/30 PHP
PHP版本升级到7.x后wordpress的一些修改及wordpress技巧
2015/12/25 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
2016/01/15 PHP
php通过各种函数判断0和空
2020/07/04 PHP
Laravel框架自定义验证过程实例分析
2019/02/01 PHP
BOOM vs RR BO3 第二场2.13
2021/03/10 DOTA
无闪烁更新网页内容JS实现
2013/12/19 Javascript
css3元素简单的闪烁效果实现(html5 jquery)
2013/12/28 Javascript
qq悬浮代码(兼容各个浏览器)
2014/01/29 Javascript
jquery实现的伪分页效果代码
2015/10/29 Javascript
js拖拽功能实现代码解析
2016/11/28 Javascript
jQuery实现web页面樱花坠落的特效
2017/06/01 jQuery
jQuery无冲突模式详解
2019/01/17 jQuery
Vue中JS动画与Velocity.js的结合使用
2019/02/13 Javascript
jquery实现进度条状态展示
2020/03/26 jQuery
在Python3中使用asyncio库进行快速数据抓取的教程
2015/04/02 Python
Python爬取京东的商品分类与链接
2016/08/26 Python
用Python将动态GIF图片倒放播放的方法
2016/11/02 Python
Python星号*与**用法分析
2018/02/02 Python
django-rest-framework解析请求参数过程详解
2019/07/18 Python
django 信号调度机制详解
2019/07/19 Python
Flask框架搭建虚拟环境的步骤分析
2019/12/21 Python
python GUI库图形界面开发之PyQt5多线程中信号与槽的详细使用方法与实例
2020/03/08 Python
2020年10款优秀的Python第三方库,看看有你中意的吗?
2021/01/12 Python
Python3+Django get/post请求实现教程详解
2021/02/16 Python
Stio官网:男女、儿童户外服装
2019/12/13 全球购物
如何将无状态会话Bean发布为WEB服务,只有无状态会话Bean可以发布为WEB服务?
2015/12/03 面试题
三万活动总结
2014/04/28 职场文书
项目合作协议书
2014/09/23 职场文书
导游词之安徽九华山
2019/09/18 职场文书
​(迎国庆)作文之我爱我的祖国
2019/09/19 职场文书
Python虚拟环境virtualenv是如何使用的
2021/06/20 Python
Debian11 Xfce终端光标的颜色怎么设置?
2022/08/14 数码科技