【问题标题】:"Bad argument (train data must be floating-point matrix)" error“错误参数(训练数据必须是浮点矩阵)”错误
【发布时间】:2016-07-13 00:42:12
【问题描述】:

我正在开发一个图像分类器。我将特征提取为 pca。我的示例代码是

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')

但是在训练过程中我收到了这个错误:

OpenCV 错误:参数错误(训练数据必须是浮点矩阵) 在 cvCheckTrainData 文件中 ..\..\..\..\opencv\modules\ml\src\inner_functions.cpp,第 857 行

【问题讨论】:

    标签: python opencv machine-learning svm


    【解决方案1】:

    解决方案这对我有用 您需要将其转换为 np 数组并需要展平该数组。

    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)
    

    培训

    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')
    

    【讨论】:

      猜你喜欢
      • 2011-08-14
      • 2018-12-26
      • 2015-02-07
      • 1970-01-01
      • 2019-01-08
      • 1970-01-01
      • 2018-10-10
      • 2019-01-16
      • 1970-01-01
      相关资源
      最近更新 更多