opencv3.4.10编译及特征提取匹配


前言

OpenCV3.X时代以后,OpenCV将代码库分成了两部分,分别是稳定的核心功能库和试验性质的contrib库(Extra Modules)。并且从3.1以后,编译好的版本中就没有现成的x86平台的库,只有x64平台的,想用就必须自己从源码编译,之前都是直接下载编译好的版本。
opencv:https://github.com/opencv/opencv/releases
opencv_contrib:https://github.com/opencv/opencv_contrib/releases


一、编译opencv库

1.环境及准备

Windows 10
VisualStudio 2017
CMake 3.19
OpenCV核心库源码
OpenCV contrib库源码

2.编译及安装

1、直接使用vcpkg一键编译最简单。(vcpkg使用配置

.\vcpkg.exe install opencv3[contrib]:x86-windows
.\vcpkg.exe install opencv3[contrib]:x64-windows
.\vcpkg.exe export opencv3[contrib]:x86-windows opencv3[contrib]:x64-windows  --zip

已编译版本:https://download.csdn.net/download/qing666888/13780914

2、使用CMake配置成VS2017工程,使用VS2017编译。具体步骤百度一下。

二、特征提取匹配

1.特征检测算法

特征检测提取算法,其中 SIFT和SURF都是需要使用nonfree module模块,即需要编译上面的opencv contrib模块。

"FAST" – FastFeatureDetector
"STAR" – StarFeatureDetector
"SIFT" – SIFT (nonfree module)
"SURF" – SURF (nonfree module)
"ORB" – ORB
"BRISK" – BRISK
"MSER" – MSER
"GFTT" – GoodFeaturesToTrackDetector
"HARRIS" – GoodFeaturesToTrackDetector with Harris detector enabled
"Dense" – DenseFeatureDetector
"SimpleBlob" – SimpleBlobDetector

Harris:用于检测角点
SIFT:用于检测斑点
SURF:用于检测斑点
FAST:用于检测角点
BRIEF:用于检测斑点
ORB:代表带有方向的FAST算法与具有旋转不变性的BRIEF算法

Harris,FAST都是用来检测角点的
SIFT(中的DOG),SURF(中的Hessian)是检测斑点的(关键点区域)
BRIEF也是检测斑点的。
ORB特征是基于FAST和BRIEF算法的,也是一种检测特征的算法

2.特征匹配算法

暴力匹配法
FLANN的匹配法

ORB特征匹配、K近邻特征匹配都是用暴力匹配法作为匹配器(BFMatcher )的

暴力匹配法由BFMatcher对象实现暴力匹配:

bf = cv2.BFMatcher(cv2.NORM_HAMMING,crossCheck = True)
matches = bf.match(des1,des2)

FLANN算法由FlannBasedMatcher实现:

flann = cv2.FlannBasedMatcher(indexParams,searchParams)
matches = flann.knnMatch(des1,des2,k = 2)

暴力匹配多用于orb特征的匹配中:

orb = cv2.ORB_create()
kp1,des1 = orb.detectAndCompute(img1,None)
kp2,des2 = orb.detectAndCompute(img2,None)

FLANN多用于SIFT特征的匹配中:

sift = cv2.xfeatures2d.SIFT_create()
kp1,des1 = sift.detectAndCompute(queryImage,None)
kp2,des2 = sift.detectAndCompute(trainingImage,None)

上述代码非qt版本。


3.测试工程

效果如下,代码直接下载工程源码:
在这里插入图片描述
原图奉上,基于Qt的工程,使用SIFT特征提取算法,FLANN匹配算法。
在这里插入图片描述
代码如下:https://download.csdn.net/download/qing666888/13950031


总结

使用opencv进行图像识别检测的大概流程,首先对两张图片使用对应的检测算法,检测出图片的特征点,然后使用合适的特征匹配算法,判断两张待检测图片的特征点匹配情况。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值