opencv - 使用 OpenCV 从小图像中提取点描述符

标签 opencv image-processing feature-detection feature-extraction

我正在尝试提取不同的点描述符(SIFT、SURF、ORB、BRIEF 等)来构建 Bag of Visual words。问题似乎是我使用的图像非常小:12x60px。 使用密集提取器我能够获得一些关键点,但随后在提取描述符时没有提取任何数据。

代码如下:

vector<KeyPoint> points;
Mat descriptor; // descriptor of the current image
Ptr<DescriptorExtractor> extractor = DescriptorExtractor::create("BRIEF");
Ptr<FeatureDetector> detector(new DenseFeatureDetector(1.f,1,0.1f,6,0,true,false));
image = imread(filename, 0);
roi = Mat(image,Rect(0,0,12,60));

detector->detect(roi,points);

extractor->compute(roi,points,descriptor);
cout << descriptor << endl;

结果是 [](使用 BRIEF 和 ORB)和 SegFault(使用 SURF 和 SIFT)。 有没有人知道如何从 OpenCV 上的小图像中密集提取点描述符? 感谢您的帮助。

最佳答案

的确,我终于设法找到了解决方案。感谢您的帮助。

我现在使用的是带有初始化参数的 Orb 检测器,而不是随机参数,例如:

Ptr<DescriptorExtractor> extractor(new ORB(500, 1.2f, 8, orbSize, 0, 2, ORB::HARRIS_SCORE, orbSize));

在找到我的问题的答案之前,我必须彻底探索 OpenCV 的文档:Orb documentation .

此外,如果人们正在使用密集点提取器,他们应该意识到在描述符计算过程之后,他们的关键点可能少于关键点提取器产生的关键点。描述符计算会删除无法获取数据的任何关键点。

关于opencv - 使用 OpenCV 从小图像中提取点描述符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19632325/

相关文章:

matlab - 使用 rgb2ind 减少 matlab 中的颜色数量

machine-learning - 人工神经网络在姿态估计中的适用性

c# - 有没有办法使用与OpenCv的MinMaxLoc类似的方法来获取n个最大值的列表,而不是仅一个最大值?

python - 什么更快 : Python 3's ' len' or numpys shape?

c++ - 为什么此代码返回段错误错误?

c++ - 找出两张图片之间的差异

c++ - Opencv 功能匹配在 iPhone 上中断,但在模拟器上没有

opencv - 检测国民身份证并获取详细信息

android - 用于 Android 图像处理的 OpenGL ES vs OpenCL vs RenderScript

opencv - 从 openCV 中更大的 Mat 中提取指定索引处的矩阵?