OpenCV中的特征匹配+单应性以查找对象
OpenCV中的特征匹配+单应性以查找对象
- 1. 效果图
- 2. 源码
- 参考
这篇博客将混合calib3d模块中的特征匹配和单应性,在复杂图像中查找已知对象。
1. 效果图
特征匹配 & 单应性查找对象效果图如下:
2. 源码
# 在图像中找到SIFT特征并应用比率测试来找到最佳匹配。import cv2
import numpy as np
from matplotlib import pyplot as pltMIN_MATCH_COUNT = 10img1 = cv2.imread('images/box.png', 0) # 查询图像
img2 = cv2.imread('images/box_in_scene.png', 0) # 训练图像# 初始化SIFT检测器
sift = cv2.xfeatures2d.SIFT_create()# 使用SIFT检测器寻找关键点和描述符
kp1, des1 = sift.detectAndCompute(img1, None)
kp2, des2 = sift.detectAndCompute(img2, None)FLANN_INDEX_KDTREE = 0
index_params = dict(algorithm=FLANN_INDEX_KDTREE, trees=5)
search_params = dict(checks=50)flann = cv2.FlannBasedMatcher(index_params, search_params)matches = flann.knnMatch(des1, des2, k=2)# 根据Lowe比率测试存储所有良好匹配项
good = []
for m, n in matches:if m.distance < 0.7 * n.distance:good.append(m)if len(good) > MIN_MATCH_COUNT:src_pts = np.float32([kp1[m.queryIdx].pt for m in good]).reshape(-1, 1, 2)dst_pts = np.float32([kp2[m.trainIdx].pt for m in good]).reshape(-1, 1, 2)M, mask = cv2.findHomography(src_pts, dst_pts, cv2.RANSAC, 5.0)matchesMask = mask.ravel().tolist()h, w = img1.shapepts = np.float32([[0, 0], [0, h - 1], [w - 1, h - 1], [w - 1, 0]]).reshape(-1, 1, 2)dst = cv2.perspectiveTransform(pts, M)img2 = cv2.polylines(img2, [np.int32(dst)], True, 255, 3, cv2.LINE_AA)
else:print("Not enough matches are found - %d/%d" % (len(good), MIN_MATCH_COUNT))matchesMask = None# 匹配点绘制为绿色,只绘制内置点
draw_params = dict(matchColor=(0, 255, 0), # 绘制匹配点为绿色singlePointColor=None,matchesMask=matchesMask, # 只绘制内置点flags=2)img3 = cv2.drawMatches(img1, kp1, img2, kp2, good, None, **draw_params)plt.imshow(img3, 'gray')
plt.xticks([])
plt.yticks([])
plt.title("feature_match & homography res")
plt.show()
参考
- https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_feature2d/py_feature_homography/py_feature_homography.html#py-feature-homography
OpenCV中的特征匹配+单应性以查找对象相关推荐
- OpenCV39:特征匹配+单应性矩阵查找对象
目标 在本章中,将学习 将从Calib3D模块中混淆特征匹配和找到(单应性矩阵)homography,以查找复杂图像中的已知对象. 基础 在之前的内容中,使用了一个query image,在其中找到了 ...
- OpenCV系列之特征匹配+单应性查找对象 | 四十五
目标 在本章节中, 我们将把calib3d模块中的特征匹配和findHomography混合在一起,以在复杂图像中找到已知对象 基础 那么我们在上一环节上做了什么?我们使用了queryImage,找到 ...
- 特征匹配 + 单应性查找对象
在本章节中, - 我们将把calib3d模块中的特征匹配和findHomography混合在一起,以在复杂图像中找到已知对象. 上节中,我们使用了queryImage,找到了其中的一些特征点,我们使用 ...
- OpenCV SURF FLANN匹配单应性的实例(附完整代码)
OpenCV SURF FLANN匹配单应性的实例 OpenCV SURF FLANN匹配单应性的实例 OpenCV SURF FLANN匹配单应性的实例 #include <iostream& ...
- OpenCV中的特征匹配(Feature Matching)
OpenCV中的特征匹配(Feature Matching) 1. 效果图 2. 原理 3. 源码 3.1 SIFT关键点检测+Knn近邻匹配 3.2 ORB关键点检测+蛮力特征匹配 3.3 SIFT ...
- OpenCV相机位移引起的单应性的实例(附完整代码)
OpenCV相机位移引起的单应性的实例 OpenCV相机位移引起的单应性的实例 OpenCV相机位移引起的单应性的实例 #include <iostream> #include <o ...
- OpenCV中的「透视变换 / 投影变换 / 单应性」—cv.warpPerspective、cv.findHomography
文章目录 引言 透视变换(projective transform) 单应性(Homography) opencv代码 仿射变换相关函数 投影变换相关的函数 鸟瞰图代码示例 小结 引言 图像的几何变换 ...
- Homography matrix(单应性矩阵)在广告投放中的实践
原文首发于微信公众号「3D视觉工坊」. 前言 由于近期在研究相机与投影仪的标定程序时,需要将结构光图片与灰点相机拍摄得到的图片中,找出角点之间的对应性,使用了如下一条代码: Mat HomoMatri ...
- 相机标定-opencv单应性矩阵实现平面坐标标定(kinect v1)
opencv单应性矩阵实现平面坐标标定 说明 一.使用单应性矩阵的原因 二.标定原理 三.findHomography 函数与 getPerspectiveTransform函数的区别 1.两者联系 ...
最新文章
- 关于 fallocate 文件系统预分配 的一些细粒度测试
- Spring Cloud Zuul
- Python error: Unable to find vcvarsall.bat
- linux 启动mongodb
- 静态工厂方法与传统构造方法
- es6 依赖循环_require 和 import 的循环依赖详解
- Eclipse快捷键的使用
- 小鹏汽车回应“侵犯消费者权益被罚3000元”:已于3月8日对购车协议内容进行调整...
- 实验二 动态规划算法 最长公共子序列问题
- vdcode C语言不能弹出运行窗口_C语言编程常见问题分析,以及错误解决办法!
- 坏道与硬盘的P表和G表
- 计算机职业素养论文1500字,【如何提高职业素养1500字】_个人职业素养提升计划1500字范文...
- his软件测试文档,HIS系统各子系统功能描述
- laravel 框架使用hdjs 实现多图上传功能
- 张小平,海底捞,比特大陆
- (七)DAC0832 数模转换芯片的应用 以及运算放大器的学习 01
- ReactNative出现诸如以上的错误; ** is not defined.都是没有导入相应的库.
- 数据集大小与模型性能的敏感性分析
- instagram封号的原因解析
- java FFMPEG调取usb摄像头,截取视频,添加文字和时间水印
热门文章
- 自动驾驶行业内时间表和技术解析
- [JAVA EE] Filter过滤器
- HarmonyOS 修改App的默认加载的界面
- java.lang.IllegalArgumentException: No view found for id 0x7f07005f (xx) for for fragment xxFragment
- android 白天和夜间模式切换时闪屏问题处理方法
- Android 实现一个验证码倒计时(Handler postDelayed 实现验证码倒计时)
- Error:Unsupported method: BaseConfig.getApplicationIdSuffix(). The version o
- RxPermissions的简单应用
- Springboot在IDEA热部署的配置方法
- 2022-2028年中国智能眼镜行业深度调研及投资前景预测报告