2

我正在研究一种应该从视频文件中的图像中识别对象的算法。目前,我想使用ORB(我知道SURF和SIFT更擅长这种工作,但我想根据我的结果做出这个肯定)。现在我有一个问题:当我运行我的程序时,在其中一张图像中,与另一张图像不同的区域中检测到关键点,并且几乎找不到任何匹配项。现在,在 OpenCV 2.4 中有 GridAdaptedFeatureDetector,这是一个允许您将源图像划分为网格并检测每个单元格中的点的类。但我使用的是 OpenCV 3.1(Visual Studio 2015),它似乎消失了?请帮我找到解决方案。

4

3 回答 3

1

他们在 OpenCV 3.1 中删除了许多不同的适配器功能检测器/提取器。
让它们恢复的方法之一是将它们从 OpenCV 2.4 复制到您的项目中。它与 OpponentSiftDescriptor 一起为我工作。您将需要修复接口,因为它们从 DescriptorExtractor 和 FeatureDetector 接口移动到 Features2D。你可以从这里复制它的代码:https ://github.com/kipr/opencv/blob/master/modules/features2d/src/detectors.cpp

于 2016-05-13T18:41:07.033 回答
0

它在 python 中,所以它可能很有用(我在寻找 python 解决方案时发现了这个问题,所以希望其他人也这样做......)但这是我用来迭代图像子块的方法:

def blocks(img, rows, cols):
    h, w = img.shape[:2]
    xs = np.uint32(np.rint(np.linspace(0, w, num=cols+1)))
    ys = np.uint32(np.rint(np.linspace(0, h, num=rows+1)))
    ystarts, yends = ys[:-1], ys[1:]
    xstarts, xends = xs[:-1], xs[1:]
    for y1, y2 in zip(ystarts, yends):
        for x1, x2 in zip(xstarts, xends):
            yield img[y1:y2, x1:x2]
于 2017-06-06T18:15:42.153 回答
0

最近有一篇论文解决了图像上的均匀关键点分布问题。此存储库中提供了 C++、Python 和 Matlab 接口。

于 2018-02-27T02:14:01.767 回答