Моя цель состоит в том, чтобы скользящее окно скользило по изображению с перекрывающимися шагами, чтобы я мог запускать классификатор в каждом окне и определять, есть ли там интересный объект.
Для этого мне нужно убедиться, что
- окна, которые я извлекаю для классификации, действительно делают по всему изображению, и
- возьмите верхнюю и левую координаты каждого скользящего окна на исходном изображении.
Следуя отсюда: Скользящее окно - как получить расположение окна на изображении?
и на основе этого кода для раздвижных окон:
https://github.com/keepitsimple/ocrtest/blob/master/sliding_window.py#blob_contributors_box
Я делаю следующее, учитывая, что winh и winw — это ширина и высота скользящего окна, а размер окна — (winh, winw):
grid_h_max =(imgheight/winh)
grid_w_max= (imgwidth / winw)
win = sliding_window(img, window_size, shiftSize=None, flatten=False)
for h in range (grid_h_max):
for w in range (grid_w_max):
win = windows[h,w]
grid_pos = (h,w), (winh, winw))
t, b, l, r = get_win_pixel_coords(grid_pos, window_size)
Это работает просто отлично - дает мне скользящие окна, а также координаты для каждого окна. Но я не получаю перекрывающиеся скользящие окна.
Итак, если мой размер шага равен 10, а мое первое окно начинается с (сверху слева): (0,0), то мое второе окно должно быть (0, 10).
Но в приведенном выше коде мое второе окно (0, 60).
Ранее я использовал этот код:
windows = sw.sliding_window(image1, window_size, step_size, flatten=True)
for w in windows:
# and then I grabbed each w and printed it out
И это давало мне все скользящие окна, включая перекрывающиеся окна. Однако в этом методе я не смог получить верхнюю и левую координаты каждого скользящего окна.