Экстрактор 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.
Есть идеи по этому вопросу?