【发布时间】:2016-08-21 11:27:11
【问题描述】:
我正在尝试使用 SVM 将图像分类为红色和绿色。为了训练,我从训练图像中提取了 rgba。我还将列表转换为 numpy 数组。但是当我将它提供给 SVM 进行训练时出现错误。我的示例代码是
import cv2
import numpy
import numpy as np
from PIL import Image
import os
print "OpenCV version : {0}".format(cv2.__version__)
svm_params = dict( kernel_type = cv2.SVM_LINEAR,
svm_type = cv2.SVM_C_SVC,
C=2.67, gamma=5.383 )
path1='c:\\colors\\red\\'
path2='c:\\colors\\green\\'
training_set = []
test_set=[]
training_labels=[]
rlist = os.listdir(path1)
glist= os.listdir(path2)
for file in rlist:
img = Image.open(path1 + file)
img200=img.resize((100,100)).convert('RGBA')
arr= np.array(img200)
print arr
training_set.append(arr)
training_labels.append(1)
for file in glist:
img = Image.open(path2 + file)
img200=img.resize((100,100)).convert('RGBA')
arr= np.array(img200)
training_set.append(arr)
training_labels.append(2)
###### SVM training ########################
trainData=np.float32(training_set)
responses=np.float32(training_labels)
svm = cv2.SVM()
svm.train(trainData,responses, params=svm_params)
svm.save('trycolor_svm_data.dat')
我收到错误
cv2.error: ..\..\..\..\opencv\modules\ml\src\inner_functions.cpp:857: error: (-5) train data must be floating-point matrix in function cvCheckTrainData
如何正确输入 svm
【问题讨论】: