python - 调整 Scikit-Learn 分类器的 HOG 特征

标签 python image image-processing scikit-learn opencv3.0

我正在尝试执行处理 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 变量中返回。

关于python - 调整 Scikit-Learn 分类器的 HOG 特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14173128/

相关文章:

python - 我的 python 游戏代码无法运行

python - Tensorflow 2.0 - 属性错误 : module 'tensorflow' has no attribute 'Session'

python - 在 python 中将 .rrd 文件转换为 json

c# - 使用 C# 去除图像中的透明度

image-processing - 如何使用kinect和opencv进行面部检测?

python - 值错误 : zero-size array to reduction operation maximum

python - request.session.flash() 和 .pop_flash()

python - 没有名为 Image 的模块

matlab - 在 MATLAB 中使用 ginput 函数时放大/缩小

java - Java中读取像素的RGB值