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字典简介以及用法详解
Nov 15 Python
教你用一行Python代码实现并行任务(附代码)
Feb 02 Python
使用Eclipse如何开发python脚本
Apr 11 Python
python读取文件名称生成list的方法
Apr 27 Python
python 获取url中的参数列表实例
Dec 18 Python
python中partial()基础用法说明
Dec 30 Python
Python 通过requests实现腾讯新闻抓取爬虫的方法
Feb 22 Python
详解Python数据可视化编程 - 词云生成并保存(jieba+WordCloud)
Mar 26 Python
Django框架 信号调度原理解析
Sep 04 Python
python针对mysql数据库的连接、查询、更新、删除操作示例
Sep 11 Python
python实现word文档批量转成自定义格式的excel文档的思路及实例代码
Feb 21 Python
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
Jun 23 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 导出Excel示例分享
2014/08/18 PHP
深入解析PHP的Yii框架中的event事件机制
2016/03/17 PHP
ThinkPHP5 的简单搭建和使用详解
2018/11/15 PHP
PHP yield关键字功能与用法分析
2019/01/03 PHP
php使用redis的几种常见操作方式和用法示例
2020/02/20 PHP
jQuery学习笔记之jQuery的DOM操作
2010/12/22 Javascript
妙用Bootstrap的 popover插件实现校验表单提示功能
2016/08/29 Javascript
javascript中闭包概念与用法深入理解
2016/12/15 Javascript
获取url中用&amp;隔开的参数实例(分享)
2017/05/28 Javascript
vue-loader教程介绍
2017/06/14 Javascript
Node.js实现连接mysql数据库功能示例
2017/09/15 Javascript
Nodejs+angularjs结合multiparty实现多图片上传的示例代码
2017/09/29 NodeJs
详解javascript常用工具类的封装
2018/01/30 Javascript
使用Layer组件弹出多个对话框(非嵌套)与关闭及刷新的例子
2019/09/25 Javascript
原生JS实现天气预报
2020/06/16 Javascript
微信小程序之滑动页面隐藏和显示组件功能的实现代码
2020/06/19 Javascript
解决js中的setInterval清空定时器不管用问题
2020/11/17 Javascript
Python实现的批量下载RFC文档
2015/03/10 Python
Python如何读取MySQL数据库表数据
2017/03/11 Python
详细介绍pandas的DataFrame的append方法使用
2019/07/31 Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
2019/08/31 Python
python实现的登录与提交表单数据功能示例
2019/09/25 Python
python 实现多线程下载视频的代码
2019/11/15 Python
全球速卖通法国在线交易平台:AliExpress法国
2017/07/07 全球购物
凯伦·米莲女装网上商店:Karen Millen
2017/11/07 全球购物
聪明的粉丝购买门票的地方:TickPick
2018/03/09 全球购物
英国和爱尔兰的自炊式豪华度假小屋:Rural Retreats
2018/06/08 全球购物
社保缴纳证明申请书
2014/11/03 职场文书
2014年幼儿园老师工作总结
2014/12/05 职场文书
安全先进个人材料
2014/12/29 职场文书
Python字符串对齐方法使用(ljust()、rjust()和center())
2021/04/26 Python
OpenCV图像变换之傅里叶变换的一些应用
2021/07/26 Python
PyTorch device与cuda.device用法
2022/04/03 Python
TypeScript 使用 Tuple Union 声明函数重载
2022/04/07 Javascript
PyCharm 配置SSH和SFTP连接远程服务器
2022/05/11 Python
python解析照片拍摄时间进行图片整理
2022/07/23 Python