我正在尝试执行此代码来处理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,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")
最佳答案