6

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

1 に答える 1

4

ソース画像 (colorato例で名前が付けられています) を に再スケーリングし(200, 200)、HOG 特徴を抽出してから、fdベクトルのリストを機械学習モデルに渡す必要があります。これらhog_imageは、機能記述子をユーザー フレンドリーな方法で視覚化することを目的としています。実際の機能はfd変数に返されます。

于 2013-01-05T16:50:16.990 に答える