OpenCV-Python ORB特征匹配(实践篇)

本文深入探讨了使用OpenCV-Python库进行ORB(Oriented FAST and Rotated BRIEF)特征匹配的方法。首先,我们介绍了ORB特征检测器的基本原理,然后通过实例展示了如何在Python中实现图像的特征检测、描述符计算和匹配过程。实验结果表明,ORB在旋转不变性和计算效率上表现出色,是图像匹配的理想选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#对象查找
import cv2
import numpy as np
import matplotlib.pyplot as plt
img1=cv2.imread(r'C:\Users\Administrator\Desktop\project\\nail_cut.png',cv2.IMREAD_GRAYSCALE)#打开灰度图像
img2=cv2.imread(r'C:\Users\Administrator\Desktop\project\\nail_2.png',cv2.IMREAD_GRAYSCALE)#打开灰度图像

orb=cv2.ORB_create()#创建ORB检测器
kp1,des1=orb.detectAndCompute(img1,None)#检测关键点和计算描述符
kp2,des2=orb.detectAndCompute(img2,None)#检测关键点和计算描述符
bf=cv2.BFMatcher_create(cv2.NORM_HAMMING,crossCheck=True)#创建匹配器
ms=bf.match(des1,des2)#执行特征匹配
ms=sorted(ms,key=lambda x:x.distance)#按距离排序
matchesMask=None
if len(ms)>10:#在有足够数量的匹配结果后,才计算查询在训练图像中的位置
    #计算查询图像匹配结果的坐标
    querypts=np.float32([kp1[m.queryIdx].pt for m in ms]).reshape(-1,1,2)
    #计算训练图像匹配结果的坐标
    trainpts = np.float32([kp1[m.queryIdx].pt for m in ms]).reshape(-1, 1, 2)
    #执行查询图像和训练图像的透视变换
    retv,mask=cv2.findHomography(querypts,trainpts,cv2.RANSAC)
    #计算最佳匹配结果的掩模,用于绘制匹
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值