加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 为Scikit-Learn分类器调整HOG功能

发布时间:2020-12-16 21:55:51 所属栏目:Python 来源:网络整理
导读:我正在尝试执行此代码来处理70个图像并提取直方图梯度(HOG)功能.这些传递给分类器(Scikit-Learn). 但是,会出现错误: hog_image = hog_image_rescaled.resize((200,200),Image.ANTIALIAS)TypeError: an integer is required 我不明白为什么,因为尝试使用单个

我正在尝试执行此代码来处理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")
最佳答案
您应该将源图像(在您的示例中名为colorato)重新缩放为(200,然后提取HOG功能,然后将fd向量列表传递给您的机器学习模型. hog_image仅用于以用户友好的方式可视化特征描述符.实际的功能在fd变量中返回.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读