Экстрактор HOG давит на некоторые изображения

Я пытаюсь извлечь функции HOG в Python, используя opencv. Поскольку я пытаюсь обнаружить как людей, так и автомобили, я подумал, что я должен использовать размер изображения по умолчанию, отличный от 64x128 (WxH), как в оригинальном HOG. Значение 96x96 кажется разумным, поэтому я попробовал. Самое смешное, что экстракторы рушатся с этим значением. Код ниже:

import cv2
import numpy as np
sample = r'D:\Dataset\misc_experimental\000245.jpg'
hog = cv2.HOGDescriptor()
# this should be BGR not RGB (for some reason opencv read this this way)
im = cv2.imread(sample)
im2 = im[..., [2, 1, 0]]
bbox = [342, 433, 430, 596]  # coordinates corresponding to a bbox 
im3 = im2[bbox[1]:bbox[3],bbox[0]:bbox[2]]
h = hog.compute(im3) # this is ok
im3r = cv2.resize(im3, dsize=(64, 128), interpolation=cv2.INTER_CUBIC)
hr = hog.compute(im3r) # this is ok
im4 = cv2.resize(im3, dsize=(96, 96), interpolation=cv2.INTER_CUBIC)
hr2 = hog.compute(im4) # this crushes

Самое смешное, что для некоторого произвольного размера изображения, например, для im3 оно работает:

im3.shape

Out [4]: ​​(163, 88, 3)

Я попытался для некоторых случайных больших размеров изображения, таких как 128x128, и он отлично работает.

Я думаю, это связано с параметрами, переданными в HOGDescriptor но, к сожалению, я не смог найти переданные значения по умолчанию. Кроме того, нет смысла взламывать для 96x96, но не для 163x88.

Исходное изображение 1280х720.

Есть идеи по этому вопросу?

0 ответов

Другие вопросы по тегам