Brute-Force蛮力匹配

cv2.BFMatcher(crossCheck = True)
crossCheck表示两个特征点相互匹配
例如A中的第i个特征点与B中的第j个特征点最近,并且B中的第j个特征点到A中的第i个特征点也是
NORM_L2:归一化数组的(欧几里得距离),如果其他特征计算方法需要考虑不同的匹配计算方法

import cv2
import numpy as np
from matplotlib import pyplot as plt
%matplotlib inlinedef show_photo(name,picture):#图像显示函数cv2.imshow(name,picture)cv2.waitKey(0)cv2.destroyAllWindows()img1 = cv2.imread('E:\Jupyter_workspace\study\data/box.png',0)
img2 = cv2.imread('E:\Jupyter_workspace\study\data/box_1.png',0)show_photo('img1',img1)
show_photo('img2',img2)sift = cv2.xfeatures2d.SIFT_create()
kp1, des1 = sift.detectAndCompute(img1,None)#kp1为关键点,des1为对应的特征向量
kp2, des2 = sift.detectAndCompute(img2,None)
bf = cv2.BFMatcher(crossCheck = True)#1对1的匹配
matches = bf.match(des1,des2)
matches = sorted(matches, key = lambda x:x.distance)
img3 = cv2.drawMatches(img1, kp1, img2, kp2, matches[:10], None, flags=2)
show_photo('img3',img3)#k对最佳匹配
bf = cv2.BFMatcher()
matches = bf.knnMatch(des1,des2,k=2)good = []
for m,n in matches:if m.distance <0.75 * n.distance:good.append([m])img3 = cv2.drawMatchesKnn(img1,kp1,img2,kp2,good,None,flags=2)
show_photo('img3',img3)

模板:

原图:

1对1的匹配:

k对最佳匹配:

如果需要更更快速的完成操作,可以尝试使用cv2.FlannBasedMatches

21-特征匹配方法(Brute-Force蛮力匹配)相关推荐

  1. JavaScript实现MaximumSubarray最大子阵列(Brute Force蛮力解决方案)算法(附完整源码)

    JavaScript实现MaximumSubarray最大子阵列(Brute Force蛮力解决方案)算法(附完整源码) bfMaximumSubarray.js完整源代码 bfMaximumSuba ...

  2. R语言使用MatchIt包进行倾向性匹配分析(设置匹配方法为nearest,匹配倾向性评分最近的对照组和病例组,1:1配比)、使用match.data函数构建匹配后的样本集合

    R语言使用MatchIt包进行倾向性匹配分析(设置匹配方法为nearest,匹配倾向性评分最近的对照组和病例组,1:1配比).使用match.data函数构建匹配后的样本集合 目录

  3. python正则匹配ip地址_IP地址正则表达式匹配方法,ip正则表达式匹配

    IP地址正则表达式匹配方法,ip正则表达式匹配 正则表达式(Regular Expression,在代码中常简写为regex.regexp或RE)是计算机科学的一个概念.正则表达式使用单个字符串来描述 ...

  4. NLP--文本丶语义匹配方法概述详解

    文本匹配和语义匹配 1.什么是文本匹配? 文本匹配是自然语言处理中一个重要的基础问题,可以应用于大量的NLP任务中,如信息检索.问答系统.复述问题.对话系统.机器翻译等,这些NLP任务在很大程度上可以 ...

  5. nc65语义模型设计_文本匹配方法系列––多维度语义交互匹配模型

    摘要 本文基于接着多语义匹配模型[1]和BERT匹配模型[2]介绍一些多维度语义交互匹配模型,包括2017 BiMPM模型[3]和腾讯出品的2018 MIX[4].这些方法的核心特征都是在多语义网络的 ...

  6. php 匹配图片路径_php正则匹配图片路径原理与方法

    下面我来给大家介绍在php正则匹配图片路径原理与实现方法,有需要了解的朋友可进入参考参考. 提取src=里面的图片地址还不足够,因为不能保证那个地址一定是绝对地址,完全的地址,如果那是相对的呢?如果地 ...

  7. bert模型可以做文本主题识别吗_文本匹配方法系列––BERT匹配模型

    1.概述 在介绍深层次交互匹配方法之前,本文接着多语义匹配方法[1]介绍基于BERT模型实现文本匹配的方法.将其单独介绍主要因为BERT实现文本匹配操作方便且效果优秀,比较适用于工业应用场景.关于be ...

  8. 【图像处理】——特征匹配(SIFT特征检测器+FLANN特征匹配方法+KNN近邻最优匹配筛选)——cv.xfeatures2d.SIFT_create()sift.detectAndCompute

    转载请注明地址 目录 1.特征检测和特征匹配方法 (1)特征检测算法 (2)特征匹配算法 (3)各种特征检测算法的比较 2.特征匹配的基本步骤(附带主要的函数) (1)图像预处理--灰度化(模板--查 ...

  9. OpenCV精进之路(十五):特征检测和特征匹配方法汇总

    一幅图像中总存在着其独特的像素点,这些点我们可以认为就是这幅图像的特征,成为特征点.计算机视觉领域中的很重要的图像特征匹配就是一特征点为基础而进行的,所以,如何定义和找出一幅图像中的特征点就非常重要. ...

最新文章

  1. 并发-9-Callable和Future
  2. yolov3为什么对大目标检测不好_基于改进Yolov3的目标检测的研究
  3. windows2008下VS2008发布失败
  4. C++中数组访问操作符的重载
  5. ---Mybatis3学习笔记(2)
  6. 【Flask】Jinja2模板之过滤器
  7. JQuery对selecte中的元素的操作
  8. html指定ie内核,指定Webbrowser控件所用IE内核版本
  9. sdutoj 2624 Contest Print Server
  10. 我使用的Chrome插件列表
  11. 比亚迪汉家族3月热销12359辆 汉EV单车销量破万
  12. VB 删除带子文件夹和文件的文件夹
  13. ZooKeeper(3.4.5) - 配置伪集群模式
  14. SpringBoot生成二维码
  15. 德标螺纹规格对照表_德标等螺纹对照表.doc
  16. Java线程池并发执行多个任务
  17. VUE解决IE不能用的方法
  18. UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xb5 in position 0: invalid start
  19. java.lang.IllegalAccessException:的一种错误类型
  20. android 模拟器使用intel硬件加速

热门文章

  1. 获取js里添加的css文件,用JS添加一个css文件
  2. python动态绘图并保留之前绘图_[转]基于Python实现matplotlib中动态更新图片(交互式绘图)...
  3. html和php文件怎么连接,html页面跟php文件连接的方法
  4. css实现div内一段文本的两端对齐
  5. koa中上传文件到阿里云oss实现点击在线预览和下载
  6. Vue2.0 --- vue-cli脚手架中全局引入JQ
  7. CSS 小结笔记之滑动门技术
  8. Ubuntu|ython3 :ImportError: cannot import name 'main'
  9. Java-IO流之BufferedReader 和BufferedWriter的使用和原理
  10. .NET使用NPOI读取Word模板并替换关键字并下载