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 的内置字符串方法小结
Mar 15 Python
PyCharm使用教程之搭建Python开发环境
Jun 07 Python
CentOS6.5设置Django开发环境
Oct 13 Python
Python正则表达式教程之二:捕获篇
Mar 02 Python
分析Python读取文件时的路径问题
Feb 11 Python
Python定义一个跨越多行的字符串的多种方法小结
Jul 19 Python
Windows下python3.6.4安装教程
Jul 31 Python
解决python ogr shp字段写入中文乱码的问题
Dec 31 Python
Django对models里的objects的使用详解
Aug 17 Python
pycharm通过ssh连接远程服务器教程
Feb 12 Python
Python matplotlib读取excel数据并用for循环画多个子图subplot操作
Jul 14 Python
python两种注释用法的示例
Oct 09 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通过COM使用ADODB的简单例子
2006/12/31 PHP
php 在文件指定行插入数据的代码
2010/05/08 PHP
Zend Framework常用校验器详解
2016/12/09 PHP
Yii框架中使用PHPExcel的方法分析
2019/07/25 PHP
一步一步制作jquery插件Tabs实现过程
2010/07/06 Javascript
js中判断数字\字母\中文的正则表达式 (实例)
2012/06/29 Javascript
js前台分页显示后端JAVA数据响应
2013/03/18 Javascript
jQuery实现动画效果的简单实例
2014/01/27 Javascript
jQuery通过Ajax返回JSON数据
2015/04/28 Javascript
基于jQuery实现点击弹出层实例代码
2016/01/01 Javascript
js流动式效果显示当前系统时间
2016/05/16 Javascript
jQuery 自定义下拉框(DropDown)附源码下载
2016/07/22 Javascript
详解webpack进阶之loader篇
2017/08/23 Javascript
微信小程序实现鼠标拖动效果示例
2017/12/01 Javascript
JavaScript引用类型之基本包装类型实例分析【Boolean、Number和String】
2018/08/09 Javascript
webpack结合express实现自动刷新的方法
2019/05/07 Javascript
Postman如何实现参数化执行及断言处理
2020/07/28 Javascript
解决vuecli3中img src 的引入问题
2020/08/04 Javascript
[02:46]2014DOTA2国际邀请赛 选手为你解读比赛MVP充满梦想
2014/07/09 DOTA
python连接sql server乱码的解决方法
2013/01/28 Python
Python制作数据导入导出工具
2015/07/31 Python
Python备份目录及目录下的全部内容的实现方法
2016/06/12 Python
Python基于TCP实现会聊天的小机器人功能示例
2018/04/09 Python
详解Python3 对象组合zip()和回退方式*zip
2019/05/15 Python
基于python实现MQTT发布订阅过程原理解析
2020/07/27 Python
python中PyQuery库用法分享
2021/01/15 Python
台湾乐天市场:日本No.1的网路购物网站
2017/03/22 全球购物
sort命令的作用和用法
2012/11/04 面试题
小学体育教学反思
2014/01/31 职场文书
土木工程师职业规划范文
2014/03/07 职场文书
学校门卫岗位职责
2014/03/16 职场文书
文明市民先进事迹
2014/05/15 职场文书
个性婚礼策划方案
2014/05/17 职场文书
学年个人总结范文
2015/03/05 职场文书
2019最新婚庆对联集锦!
2019/07/10 职场文书
MySQL 外连接语法之 OUTER JOIN
2022/04/09 MySQL