特征点匹配返回匹配坐标点python

这篇具有很好参考价值的文章主要介绍了特征点匹配返回匹配坐标点python。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
from scipy import stats


def drawMatchesKnn_cv(img1_gray, kp1, img2_gray, kp2, goodMatch):
    h1, w1 = img1_gray.shape[:2]
    h2, w2 = img2_gray.shape[:2]

    vis = np.zeros((max(h1, h2), w1 + w2, 3), np.uint8)
    vis[:h1, :w1] = img1_gray
    vis[:h2, w1:w1 + w2] = img2_gray

    p1 = [kpp.queryIdx for kpp in goodMatch]
    p2 = [kpp.trainIdx for kpp in goodMatch]

    post1 = np.int32([kp1[pp].pt for pp in p1])
    post2 = np.int32([kp2[pp].pt for pp in p2]) + (w1, 0)

    for (x1, y1), (x2, y2) in zip(post1, post2):
        cv.line(vis, (x1, y1), (x2, y2), (0, 0, 255))

    cv.namedWindow("match", cv.WINDOW_NORMAL)
    cv.imshow("match", vis)



img1_gray = cv.imread("D:/dht/left1.png", 0)
img2_gray = cv.imread("D:/dht/right1.png", 0)
img1_gray = cv.resize(img1_gray, (1800, 2400))
img2_gray = cv.resize(img2_gray, (1800, 2400))

# sift = cv.SIFT()
# sift = cv.xfeatures2d.SIFT_create()
sift = cv.SIFT_create()
# sift = cv.SURF()
kp1, des1 = sift.detectAndCompute(img1_gray, None)
kp2, des2 = sift.detectAndCompute(img2_gray, None)
# 设置Flannde参数
FLANN_INDEX_KDTREE = 0
indexParams = dict(algorithm=FLANN_INDEX_KDTREE, trees=5)
searchParams = dict(checks=50)
flann = cv.FlannBasedMatcher(indexParams, searchParams)
matches = flann.knnMatch(des1, des2, k=2)
# bf = cv.BFMatcher(cv.NORM_L2)
# matches = bf.knnMatch(des1,des2,k=2)
# 设置好初始匹配值
destinationx = []
destinationy = []
matchesMask = [[0, 0] for i in range(len(matches))]
for i, (m, n) in enumerate(matches):
    if m.distance < 0.5 * n.distance:  # 舍弃小于0.5的匹配结果
        matchesMask[i] = [1, 0]
        # matchesMask[i] = [1, 0]
        pt1 = kp1[m.queryIdx].pt  # trainIdx    是匹配之后所对应关键点的序号,第一个载入图片的匹配关键点序号
        pt2 = kp2[n.trainIdx].pt  # queryIdx  是匹配之后所对应关键点的序号,第二个载入图片的匹配关键点序号
        destinationx.append(int(pt1[0]-pt2[0]))
        destinationy.append(int(pt1[1]-pt2[1]))
        # print(kpts1)
        print(i, pt1, pt2)


# counts = np.bincount(destinationx)
print(destinationx)
#print(stats.mode(destinationx)[0][0])

#返回众数
# print(np.argmax(counts))

# counts = np.bincount(destinationy)
#返回众数
print(destinationy)
#print(stats.mode(destinationy)[0][0])

drawParams=dict(matchColor=(0,0,255),singlePointColor=(255,0,0),matchesMask=matchesMask,flags=0) #给特征点和匹配的线定义颜色
resultimage=cv.drawMatchesKnn(img1_gray,kp1,img2_gray,kp2,matches,None,**drawParams) #画出匹配的结果
plt.imshow(resultimage)
plt.show()

特征点匹配返回匹配坐标点python,图像处理,python,opencv,计算机视觉

 文章来源地址https://www.toymoban.com/news/detail-628464.html

到了这里,关于特征点匹配返回匹配坐标点python的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 图像处理中,采用极线约束准则来约束特征点匹配搜索空间,理论上在极线上进行搜索。这里的极线是什么线,怎么定义的?基本矩阵F和本质矩阵E有什么区别?

    问题描述:图像处理中,采用极线约束准则来约束特征点匹配搜索空间,理论上在极线上进行搜索。这里的极线是什么线,怎么定义的?基本矩阵F和本质矩阵E有什么区别? 问题1解答: 极线是通过极线几何学的原理定义的。在摄影测量学和计算机视觉中,极线是由两个相机

    2024年01月19日
    浏览(40)
  • 【图像处理】模板匹配的学习笔记

    cv.TM_CCOEFF cv.TM_CCOEFF_NORMED cv.TM_CCORR cv.TM_CCORR_NORMED cv.TM_SQDIFF cv.TM_SQDIFF_NORMED Note: cv2.TM_CCOEFF_NORMED :相较于其它方法,通常被认为具有较好的鲁棒性

    2024年02月10日
    浏览(33)
  • OpenCV基本图像处理操作(十)——图像特征harris角点

    角点 角点是图像中的一个特征点,指的是两条边缘交叉的点,这样的点在图像中通常表示一个显著的几角。在计算机视觉和图像处理中,角点是重要的特征,因为它们通常是图像中信息丰富的区域,可以用于图像分析、对象识别、3D建模等多种应用。 角点的识别可以帮助在进

    2024年04月23日
    浏览(64)
  • 【图像处理】SIFT角点特征提取原理

            提起在OpenCV中的特征点提取,可以列出Harris,可以使用SIFT算法或SURF算法来检测图像中的角特征点。本篇围绕sift的特征点提取,只是管中窥豹,而更多的特征点算法有: Harris Stephens / Shi–Tomasi 角点检测算法 Förstner角点检测器; 多尺度 Harris 算子 水平曲线曲率法

    2024年02月07日
    浏览(43)
  • 图像处理 边缘检测 绘制金字塔 模板匹配

    Canny边缘检测器是一种多步算法,用于检测任何输入图像的边缘。 边缘检测步骤: 1.应用 高斯滤波器 ,以平滑图像,滤除噪声( 降噪 ) 2.计算图像中每个像素点的梯度大小(边缘两侧和卷积之间的像素差值和方向(x和y方向)(梯度Scole算子检测边缘) 3.使用非极大值抑制,

    2024年02月06日
    浏览(53)
  • 计算机图像处理—HOG 特征提取算法

    1. 实验内容 本实验将学习HOG 特征提取算法。 2. 实验要点 HOG 算法 HOG 算法有效的原因 创建 HOG 描述符 HOG 描述符中的元素数量 可视化 HOG 描述符 理解直方图 3. 实验环境 Python 3.6.6 numpy matplotlib cv2 copy 简介 正如在 ORB 算法中看到的,我们可以使用图像中的关键点进行匹配,以检

    2024年02月09日
    浏览(55)
  • OpenCV数字图像处理实战二:模板匹配(C++)

    (1)首先需要一个模板图像 T(子图像)和一个待检测的图像(源图像 S) (2)在待检测图像从左到右,从上到下计算模板图像与重叠子图像的匹配度,匹配度越高,两者相同的可能性越大。 3.1 单模板匹配 注意:result的长宽正好是(原图-模板图)的长宽,result图中白亮程

    2024年02月15日
    浏览(46)
  • 多媒体数据处理实验3:图像特征提取与检索

    1. 算法描述 功能:   使用BOF(Bag of Features)算法提取图像特征,在corel数据集(10*100)张图片上实现以图搜图,即输入数据集中某一张图,在剩下的999张图里搜索最邻近的10张图。 2.算法流程: 用 SIFT算法 提取图像的特征。每幅图像提取出几百至几千个特征点,将所有图像的特

    2024年02月07日
    浏览(67)
  • 【MATLAB图像处理实用案例详解(12)】——基于纹理特征的指纹识别方法

    指纹识别系统主要涉及4个步骤:指纹图像采集、图像预处理、特征提取、特征匹配。一开始,通过指纹读取设备取得图像,并对原始图像进行初步处理,使之更清晰。接下来,指纹识别软件提取指纹的数字表示——特征点数据。这些数据通常称为模板,保存为数据库中的一条

    2024年02月02日
    浏览(60)
  • python opencv orb特征点提取匹配然后图像拼接

    opencv 基于ORB特征点图像拼接_特征点 warpperspective-CSDN博客 图像用这儿的 右边多出了一部分黑色的,应该是重复部分的宽

    2024年01月19日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包