Resizing the HOG Function for the Scikit-Learn Classifier

I am trying to execute this code that processes 70 images and retrieves the histogram function of oriented gradients (HOG). They are passed to the classifier (Scikit-Learn).

However, an error occurs:

hog_image = hog_image_rescaled.resize((200, 200), Image.ANTIALIAS) TypeError: an integer is required 

I don’t understand why, because when trying to work with one image correctly.

 #Hog Feature from skimage.feature import hog from skimage import data, color, exposure import cv2 import matplotlib.pyplot as plt from PIL import Image import os import glob import numpy as np from numpy import array listagrigie = [] path = 'img/' for infile in glob.glob( os.path.join(path, '*.jpg') ): print("current file is: " + infile ) colorato = Image.open(infile) greyscale = colorato.convert('1') #hog feature fd, hog_image = hog(greyscale, orientations=8, pixels_per_cell=(16, 16), cells_per_block=(1, 1), visualise=True) plt.figure(figsize=(8, 4)) print(type(fd)) plt.subplot(121).set_axis_off() plt.imshow(grigiscala, cmap=plt.cm.gray) plt.title('Input image') # Rescale histogram for better display hog_image_rescaled = exposure.rescale_intensity(hog_image, in_range=(0, 0.02)) print("hog 1 immagine shape") print(hog_image_rescaled.shape) hog_image = hog_image_rescaled.resize((200, 200), Image.ANTIALIAS) listagrigie.append(hog_image) target.append(i) print("ARRAY of gray matrices") print(len(listagrigie)) grigiume = np.dstack(listagrigie) print(grigiume.shape) grigiume = np.rollaxis(grigiume, -1) print(grigiume.shape) from sklearn import svm, metrics n_samples = len(listagrigie) data = grigiume.reshape((n_samples, -1)) # Create a classifier: a support vector classifier classifier = svm.SVC(gamma=0.001) # We learn the digits on the first half of the digits classifier.fit(data[:n_samples / 2], target[:n_samples / 2]) # Now predict the value of the digit on the second half: expected = target[n_samples / 2:] predicted = classifier.predict(data[n_samples / 2:]) print("expected") print("predicted") 
+4
source share
1 answer

You have to rescale the original image (named colorato in your example) to (200, 200) , then extract the HOG functions, and then pass the list of fd vectors to the computer's training model. hog_image are intended only for visualization of function descriptors in a user-friendly form. Actual functions are returned in the fd variable.

+3
source

All Articles