Я новичок в компьютерном зрении и обработке изображений и использую этот код
from skimage.feature import hog
hog_list, hog_img = hog(test_img_gray,
orientations=8,
pixels_per_cell=(16, 16), cells_per_block=(1, 1),
block_norm='L1',
visualise=True,
feature_vector=True)
plt.figure(figsize=(15,10))
plt.imshow(hog_img)
чтобы получить это изображение визуализации HOG
У меня есть 2 вопроса:
Когда я пытаюсь сохранить это изображение (как .pdf или .jpg), получающееся изображение становится чисто черным. Преобразование этого изображения в формат PIL и его изучение с помощью
hog_img_pil = Image.fromarray(hog_img) hog_img_pil.show()
по-прежнему показывает изображение как чисто черный. Почему это происходит и как это исправить?
Когда я пытаюсь запустить этот код
hog_img = cv2.cvtColor(hog_img, cv2.COLOR_BGR2GRAY)
чтобы преобразовать изображение в оттенки серого, я получаю сообщение об ошибке error: (-215) depth == CV_8U || depth == CV_16U || depth == CV_32F in function cvtColor
. Что мне нужно сделать, чтобы получить это изображение в оттенках серого, и почему это должно происходить?
В качестве дополнительной информации, запуск hog_img.shape
возвращает (1632, 1224)
, который является просто размером изображения, который я изначально интерпретировал как означающий, что изображение уже находится в градациях серого (поскольку кажется, что ему не хватает измерения для цветового канала). Однако, когда я попытался запустить
test_img_bw = cv2.adaptiveThreshold(
src=hog_img,
maxValue=255,
adaptiveMethod=cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
thresholdType=cv2.THRESH_BINARY,
blockSize=115, C=4)
Я получил сообщение об ошибке error: (-215) src.type() == CV_8UC1 in function adaptiveThreshold
, которое, как кажется, этот ответ означает, что изображение не в оттенках серого.
Наконец, еще одна полезная информация: запуск print(hog_img.dtype)
на изображении возвращает float64
.
А пока я продолжу отладку
Спасибо за любые мысли :)