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程序帮大家清理windows垃圾
Jan 15 Python
Python之自动获取公网IP的实例讲解
Oct 01 Python
python3爬取淘宝信息代码分析
Feb 10 Python
Python简单计算文件MD5值的方法示例
Apr 11 Python
pandas数据预处理之dataframe的groupby操作方法
Apr 13 Python
tensorflow 1.0用CNN进行图像分类
Apr 15 Python
详谈python3 numpy-loadtxt的编码问题
Apr 29 Python
tensorflow实现简单逻辑回归
Sep 07 Python
python实时获取外部程序输出结果的方法
Jan 12 Python
python3+PyQt5 使用三种不同的简便项窗口部件显示数据的方法
Jun 17 Python
python获取Pandas列名的几种方法
Aug 07 Python
Python爬取破解无线网络wifi密码过程解析
Sep 17 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动态图像的创建
2006/10/09 PHP
40个迹象表明你还是PHP菜鸟
2008/09/29 PHP
PHP curl使用实例
2015/07/02 PHP
PHP实现倒计时功能
2020/11/16 PHP
HTML5如何适配 iPhone IOS 底部黑条
2021/03/09 HTML / CSS
使用jquery插件实现图片延迟加载技术详细说明
2011/03/12 Javascript
动态的改变IFrame的高度实现IFrame自动伸展适应高度
2012/12/28 Javascript
jquery 实现两级导航菜单附效果图
2014/03/07 Javascript
JavaScript中的typeof操作符用法实例
2014/04/05 Javascript
table行随鼠标移动变色示例
2014/05/07 Javascript
confirm的用法示例用于按钮操作时确定是否执行
2014/06/19 Javascript
js精美的幻灯片画集特效代码分享
2015/08/29 Javascript
基于jQuery实现select下拉选择可输入附源码下载
2016/02/03 Javascript
JS实现移动端触屏拖拽功能
2018/07/31 Javascript
详解webpack打包时排除其中一个css、js文件或单独打包一个css、js文件(两种方法)
2018/10/26 Javascript
微信小程序手动添加收货地址省市区联动
2020/05/18 Javascript
微信小程序实现发微博功能的示例代码
2020/06/24 Javascript
如何手写简易的 Vue Router
2020/10/10 Javascript
Nest.js环境变量配置与序列化详解
2021/02/21 Javascript
[45:25]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
[32:39]完美世界DOTA2联赛循环赛 Forest vs Inki BO2第一场 11.04
2020/11/04 DOTA
Python3中编码与解码之Unicode与bytes的讲解
2019/02/28 Python
Django框架模板语言实例小结【变量,标签,过滤器,继承,html转义】
2019/05/23 Python
Django框架创建mysql连接与使用示例
2019/07/29 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
2019/08/09 Python
python如何写出表白程序
2020/06/01 Python
Django中使用Celery的方法步骤
2020/12/07 Python
解决html5中video标签无法播放mp4问题的办法
2017/05/07 HTML / CSS
Ibatis中如何提高SQL Map的性能
2013/05/11 面试题
Servlet的实例是在生命周期什么时候创建的?配置servlet最重要的是什么?
2012/05/30 面试题
水利公司纪检监察自我鉴定
2014/02/25 职场文书
工地安全标语
2014/06/07 职场文书
学校领导班子群众路线整改措施
2014/09/16 职场文书
2015年保洁工作总结范文
2015/04/28 职场文书
关于mysql中string和number的转换问题
2022/06/14 MySQL
Win11自动黑屏怎么办 Win11自动黑屏设置教程
2022/07/15 数码科技