猪+;使用iniria数据集进行SVM训练,TypeError:样本不是numpy数组,也不是标量

猪+;使用iniria数据集进行SVM训练,TypeError:样本不是numpy数组,也不是标量,numpy,dataset,svm,glob,image-recognition,Numpy,Dataset,Svm,Glob,Image Recognition,我正在和一个小组一起进行行人检测。我试图找出一个不断出现的错误,上面写着“TypeError:samples不是一个numpy数组,也不是一个标量”,当它出现时,它指向的代码行是svm.train(X_data,cv2.ml.ROW_SAMPLE,labels12) 我试着跟踪几十个在线指南,但我还是没能解决这个问题,我对这个也很陌生 import cv2 import numpy as np from skimage import feature from skimage import exp

我正在和一个小组一起进行行人检测。我试图找出一个不断出现的错误,上面写着“TypeError:samples不是一个numpy数组,也不是一个标量”,当它出现时,它指向的代码行是
svm.train(X_data,cv2.ml.ROW_SAMPLE,labels12)

我试着跟踪几十个在线指南,但我还是没能解决这个问题,我对这个也很陌生

import cv2
import numpy as np
from skimage import feature
from skimage import exposure
import glob
import matplotlib.pyplot as plt
import matplotlib.image as mpimg

# training

X_data = []
labels1 = []
label = []
files = glob.glob ("new_pos_1/crop*.PNG")
for myFile in files:
    # print(myFile)
    image = cv2.imread(myFile,)
    image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    X_data.append (image)
    labels1.append('Pedestrian')


print('X_data shape:', np.array(X_data).shape)
labels12 = np.array([labels1])
print('labels12 shape:',np.array(labels12).shape)
print('labels shape:', np.array(labels1).shape)
#Testing
Y_data = []

files = glob.glob ("new_pos_1/person*.PNG")
for myFile in files:
    # print(myFile)
    image = cv2.imread (myFile)
    image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    Y_data.append (image)
    label.append('Pedestrian')

print('Y_data shape:', np.array(Y_data).shape)

print('label shape:', np.array(label).shape)

hog_features = []
for image in np.array(X_data):
    (fd, hogImage) = feature.hog(image, orientations=9, pixels_per_cell=(8, 8), cells_per_block=(2, 2),
                                    transform_sqrt=True, block_norm="L2-Hys", visualise=True)
    hogImage = exposure.rescale_intensity(hogImage, out_range=(0, 255))
    hogImage = hogImage.astype("uint8")
    hog_features.append(fd)

print("I'm done hogging")
print(hog_features)
svm = cv2.ml.SVM_create()
svm.setKernel(cv2.ml.SVM_LINEAR)
svm.setType(cv2.ml.SVM_C_SVC)
svm.setC(2.67)
svm.setGamma(5.383)
print("Done initializing SVM parameters")
# Train SVM on training data
svm.train(X_data, cv2.ml.ROW_SAMPLE, labels12)
print("Done trainning")
svm.save('svm_data.dat')
print("SAVED.")
#testResponse = svm.predict(testData)[1].ravel()
cv2.waitKey(0)
开头的那行写着
labels12=np.array([labels1])
我曾试图修复显示无效的错误。
这是帮助我编写此代码的原始网站:

您还应该执行
X\u data2=np.array([X\u data])
并调用
svm.train(X\u data2,cv2.ml.ROW\u SAMPLE,label12)