【问题标题】:Getting Error while giving input to SVM in opencv在opencv中向SVM提供输入时出错
【发布时间】: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

【问题讨论】:

    标签: python opencv numpy svm


    【解决方案1】:

    如果你打印 'arr',你会明白这是一个列表的列表。这就是问题所在。你需要在向 svm 提供输入之前将其展平。

    flat_arr= arr.ravel()
    

    这是更正后的代码。

    for file in listing1:
     img = Image.open(path1 + file)
     img200=img.resize((100,100)).convert('RGBA')
     arr= np.array(img200)
     flat_arr= arr.ravel()
     training_set.append(flat_arr)
     training_labels.append(1)
    for file in listing2:
     img = Image.open(path2 + file)
     img200=img.resize((100,100)).convert('RGBA')
     arr= np.array(img200)
     flat_arr= arr.ravel()
     training_set.append(flat_arr)
     training_labels.append(2)
    

    【讨论】:

      猜你喜欢
      • 2019-06-25
      • 2013-01-26
      • 2014-10-22
      • 2015-06-12
      • 1970-01-01
      • 2017-07-18
      • 1970-01-01
      • 2011-10-30
      • 2018-10-09
      相关资源
      最近更新 更多