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