首页 > 其他分享 >关于特征匹配

关于特征匹配

时间:2022-10-12 16:22:40浏览次数:61  
标签:kp1 kp2 匹配 特征 cv2 matches 关于 img2 img1

import cv2
import numpy as np
import matplotlib.pyplot as plt

def cv_show(name,img):
cv2.imshow(name,img)
cv2.waitKey(0)
cv2.destroyAllWindows()

#Brute_Force蛮力匹配

img1=cv2.imread("build1.jpeg",0)
img2=cv2.imread("build3.jpeg",0)


# cv_show("img1",img1)
# cv_show("img2",img2)

sift=cv2.SIFT_create()


kp1=sift.detect(img1,None)
kp2=sift.detect(img2,None)

img1=cv2.drawKeypoints(img1,kp1,img1)
img2=cv2.drawKeypoints(img2,kp2,img2)

kp1,des1=sift.compute(img1,kp1)
kp2,des2=sift.compute(img2,kp2)
# crossCheck表示两个特征点要互相匹,例如A中的第1 个特征点与B中的第j个特征点最近的,并且B中的第j个特征点到A中的第i个特征点也是

#NORM L2:归一化数组的(欧几里德距离),如果其他特征计算方法需要考虑不同的匹配计算方式


#1对1最佳匹配
# bf=cv2.BFMatcher(crossCheck=True)
#
# 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)
#
# cv_show("img3",img3)


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)
cv_show("img3",img3)

标签:kp1,kp2,匹配,特征,cv2,matches,关于,img2,img1
From: https://www.cnblogs.com/kun-sir/p/16784886.html

相关文章

  • 关于将EXCEL文件导入到MYSQL数据库的一些方法
     现在我来介绍一下如何利用phpMyAdmin批量导入Excel内容到MySQL。首先你要知道phpMyAdmin是什么(不知道的这篇文章可以跳过了),我今天用的版本是phpMyAdmin3.2.4,MySQL的版......
  • 【每周NLP论文推荐】 介绍语义匹配中的经典文章
    欢迎来到《每周NLP论文推荐》。在这个专栏里,还是本着有三AI一贯的原则,专注于让大家能够系统性完成学习,所以我们推荐的文章也必定是同一主题的。语义匹配也是NLP中比较基础的......
  • 关于 分组背包
    问题描述:有N种物品和一个容量为V的背包,每组物品有若干个,同一组内的物品最多只能选一个。每件体积是w[i][j],价值是v[i][j]。求解将哪些物品装入背包可使价值总和最......
  • 关于mysql archive存储引擎
    政府还有一个让数据库专家摊上更多事情的职能,就是安全控制和数据审计。那些管理着海量数据仓库的企业官员常常得回答诸如“何人何时修改了什么”或者“何人何时查看了什么”......
  • 关于 springcloud + nacos 启动报错:nacos save snapshot error
    关于nacos报错:nacossavesnapshoterror1:首先这个nacos报错并不影响你的正常使用,但是每次启动错误都会报错nacossavesnapshoterror,找不到config的配置;2:确......
  • 【杂谈】关于数据和模型,初学者极容易忽视的两个问题!
    说起深度学习与CNN,想必大家很熟悉;说起计算机视觉中的目标检测等各个方向,相比大家平时也接触过不少东西了;不过有两个小的方向,虽然相关的论文、项目、甚至研究方法都不多,却是......
  • 关于useState和useRef的区别
    1:  useState的值在每个rernder中都是独立存在的。而useRef.current则更像是相对于render函数的一个全局变量,每次他会保持render的最新状态。这种关系更像是js一个经典......
  • 关于max_allowed_packet的修改
    项目中查询的时候会好好的,但是有时候会突然间报错:packetforqueryistoolarge(2248>1024),youcanchangethisvalueontheserverbysettingthemax_allowed_packet......
  • 关于ATL组件网页调用
    一、控件只构造不初始化原因:说明网页已经加载了组件,但自身实现可能不完整,使用下面的方案3解决了问题 解决方案1:BEGIN_PROP_MAP(CYQFrame) PROP_DATA_ENTRY("_cx",......
  • 模式匹配之BF
    BF1.BF算法1.1算法思想判断是否为空串判断模式串T是否长于主串S初始化:主串S和模式串T均从头开始,用指示器i,j分别指向S,T需要比较的字符两串逐位比较:当S和T均没......