为Scikit-Learn分类器调整HOG特征大小



我正在尝试执行这段代码,处理70张图像并提取定向梯度直方图(HOG)特征。这些被传递给分类器(Scikit-Learn)。

但是,会抛出一个错误:

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

我不明白为什么,因为尝试使用单个图像可以正常工作。

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

您应该将源图像(在您的示例中名为colorato)重新缩放为(200, 200),然后提取HOG特征,然后将fd向量列表传递给您的机器学习模型。hog_image只是为了以用户友好的方式可视化功能描述符。实际的特性在fd变量中返回。

最新更新