train sklearn scikit learn how from fit example datasets clf classifiers classifier image opencv image-processing scikit-learn opencv3.0

image - scikit - sklearn classifiers example



Función de cambio de tamaño HOG para el clasificador Scikit-Learn (1)

Estoy intentando ejecutar este código que procesa 70 imágenes y extrae las características del histograma de degradados orientados (HOG). Estos se pasan a un clasificador (Scikit-Learn).

Sin embargo, se genera un error:

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

No entiendo por qué, porque al intentar con una sola imagen funciona correctamente.

#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")


Deberías reescalar la imagen de origen (llamada colorato en tu ejemplo) a (200, 200) , luego extraer las características HOG y luego pasar la lista de vectores fd a tus modelos de aprendizaje automático. El hog_image está destinado a visualizar los descriptores de características de una manera fácil de usar. Las características reales se devuelven en la variable fd .