我是opencv的新手,并尝试在两个图像之间实现图像匹配.为此,我试图理解特征描述符,描述符提取器和描述符匹配器之间的区别.我遇到了很多术语,试图在opencv文档网站上阅读它们,但我似乎无法理解这些概念.我理解这里的基本区别.特征检测与描述符提取的区别
但是在研究这个主题时我遇到了以下术语:
快速,GFTT,SIFT,SURF,MSER,STAR,ORB,BRISK,FREAK,Brief
我理解FAST,SIFT,SURF是如何工作的,但似乎无法弄清楚上面哪些只是探测器,哪些是提取器.
然后是匹配者.
FlannBased,BruteForce,knnMatch以及其他一些人.
经过一些阅读后,我认为某些匹配器只能与某些提取器一起使用,如此处所述.OpenCV ORB功能检测器如何工作? 给出的分类非常清楚,但它仅适用于少数提取器,我不理解float和uchar之间的区别.
所以基本上,有人可以请
我知道它要求很多,但我将非常感激.谢谢.
c++ opencv image-processing computer-vision feature-detection
正如OpenCV 2.4.9.0中所知,这些特征检测器:SIFT, SURF, BRISK, FREAK, STAR, FAST, ORB.
所有这些都对CPU执行,但只FAST和ORBGPU上.http://docs.opencv.org/genindex.html
众所周知,有些是缩放/旋转不变的,但有些则不是:对于尺度不变特征提取,是否存在SURF和SIFT的快速替代方案?
这些是规模不变和旋转不变的:
但这些不是规模不变的,也不是旋转不变的:
是否有任何探测器在GPU上实现并且是缩放/旋转不变的?
或者将在GPU或OpenCL上的OpenCV 3.0中添加?
opencv feature-extraction computer-vision feature-detection orb
任务:将人脸图像分类为女性或男性。可以使用带标签的训练图像,从网络摄像头获取测试图像。
使用: Python 2.7,OpenCV 2.4.4
我正在使用 ORB 从灰度图像中提取特征,我希望将其用于训练 K-最近邻分类器。每个训练图像都是不同的人,因此每个图像的关键点和描述符的数量明显不同。我的问题是我无法理解 KNN 和 ORB 的 OpenCV 文档。我看过其他关于 ORB、KNN 和 FLANN 的 SO 问题,但它们并没有多大帮助。
ORB 给出的描述符的性质究竟是什么?它与通过BRIEF、SURF、SIFT等获得的描述符有何不同?
对于 KNN 中的每个训练样本,特征描述符似乎应该具有相同的大小。如何确保每个图像的描述符大小相同?更一般地说,特征应该以什么格式呈现给 KNN 以使用给定的数据和标签进行训练?数据应该是整数还是浮点数?可以是字符吗?
可以在此处找到训练数据。
我也在使用haarcascade_frontalface_alt.xml来自 opencv 的示例
现在 KNN 模型只提供了 10 张图像进行训练,以查看我的程序是否通过而没有错误,但没有。
这是我的代码:
import cv2
from numpy import float32 as np.float32
def chooseCascade():
# TODO: Option for diferent cascades
# HAAR Classifier for frontal face
_cascade = cv2.CascadeClassifier('haarcascade_frontalface_alt.xml')
return _cascade
def cropToObj(cascade,imageFile):
# Load as 1-channel grayscale image
image = …Run Code Online (Sandbox Code Playgroud) python opencv classification image-processing image-recognition