Python OpenCV滑动窗口对象检测

时间:2016-09-02 21:21:09

标签: python opencv histogram object-detection sliding-window

我在python 2.7,openCV版本3中实现滑动窗口,使用sklearn,skimage应用HOG检测器来本地化对象。

HOG设置正常。如果我不使用滑动窗口,一切正常。

问题是滑动窗口的大小为128x128,特征向量长度为​​15876.而训练集的大小为579474,因为它是在800x600图像上训练的。

我还没有看到任何直接以明确的方式解决这个问题的问题,但它确实让我感到困惑。我也没有看到很多论文解决这个问题。

我的代码是:

clf = joblib.load(model_path) 
# load the image and define the window width and height
image = imread(args["image"], flatten=True)
(winW, winH) = (128, 128)

# loop over the image pyramid
for resized in pyramid(image, scale=1.5):
    # loop over the sliding window for each layer of the pyramid
    for (x, y, window) in sliding_window(resized, stepSize=32, windowSize=(winW, winH)):
        # if the window does not meet our desired window size, ignore it
        if window.shape[0] != winH or window.shape[1] != winW:
            continue

        fd = hog(window, orientations, pixels_per_cell, cells_per_block, visualize, normalize)
        pred = clf.predict(fd)
        if pred == 1:
            print("found, found, found, found, found")

如果我绘制它,滑动窗口可视化很好,它只是预测功能。如何将窗口特征与较大长度的训练特征向量进行比较?

非常感谢你的时间!

亲切的问候,

佛瑞德

1 个答案:

答案 0 :(得分:1)

我想我有答案:

只需训练与窗口大小相同尺寸的图像。可能看起来你正在丢失数据,但随后在更大的图像上进行测试。为了使其正常工作,所述目标对象应该适合窗口大小。

所以我正在训练270x200,然后扫描一个270x200的窗口,比如一个2.7K X 2K(相同的宽高比)。

对于其他困惑的人来说,它的工作原理如下:)

佛瑞德