2016-03-25 9 views
1

Ich entwickle einen Bildklassifizierer. Ich extrahierte Features wie pca. Mein Beispielcode ist"Schlechtes Argument (Zugdaten müssen Fließkomma-Matrix sein)" Fehler

for file in listing1: 
    img = cv2.imread(path1 + file) 
    res=cv2.resize(img,(250,250)) 
    gray_image = cv2.cvtColor(res, cv2.COLOR_BGR2GRAY) 
    xarr=np.squeeze(np.array(gray_image).astype(np.float32)) 
    m,v=cv2.PCACompute(xarr) 
    training_set.append(v) 
    training_labels.append(1) 

trainData=np.float32(np.float32(xi) for xi in training_set) 
responses=np.float32(training_labels) 
svm = cv2.SVM() 
svm.train(trainData,responses, params=svm_params) 
svm.save('svm_data.dat') 

Aber während der Ausbildung erhalte ich diese Fehlermeldung:

OpenCV Error: Bad argument (train data must be floating-point matrix) in cvCheckTrainData, file ..\..\..\..\opencv\modules\ml\src\inner_functions.cpp, line 857

Antwort

1

Lösung Dieses für mich gearbeitet Sie müssen es konvertieren in np-Array und brauchen dieses Array zu glätten .

for file in listing1: 
img = cv2.imread(path1 + file) 
res=cv2.resize(img,(250,250)) 
gray_image = cv2.cvtColor(res, cv2.COLOR_BGR2GRAY) 
xarr=np.squeeze(np.array(gray_image).astype(np.float32)) 
m,v=cv2.PCACompute(xarr) 
arr= np.array(v) 
flat_arr= arr.ravel() 
training_set.append(flat_arr) 
training_labels.append(1) 

Trainings

trainData=np.float32(training_set) 
responses=np.float32(training_labels) 
svm = cv2.SVM() 
svm.train(trainData,responses, params=svm_params) 
svm.save('svm_data.dat') 
Verwandte Themen