【发布时间】:2019-12-19 10:05:18
【问题描述】:
当我使用 SVM 的 trainAuto 方法时,我得到 getKernelType() 的值 2,但是当我在代码中使用 RBF 时,它会训练我的文件并输出 XML 文件。
svm = cv2.ml.SVM_create()
svm.setType(cv2.ml.SVM_C_SVC)
svm.setKernel(cv2.ml.SVM_RBF)
svm.setGamma(0.0025)
svm.setC(0.5)
svm.train(samples, cv2.ml.ROW_SAMPLE, labels)
svm.save('svm_data.xml')
以上代码对我有用。但是当我用下面的代码移动到预测部分时
hog = cv2.HOGDescriptor((100,200), (16,16), (8,8), (8,8), 9)
svm = cv2.ml.SVM_load('svm_data.xml')
sv = svm.getSupportVectors()
rho, alpha, svidx = svm.getDecisionFunction(0)
svm_new = np.append(sv, -rho)
hog.setSVMDetector(svm_new)
显示低于错误
error: (-215:Assertion failed) checkDetectorSize() in function 'cv::HOGDescriptor::setSVMDetector'
但是当我用 LINEAR 更改 RBF 时它在预测部分对我有用。
当我检查时
print (hog.checkDetectorSize())
print (hog.getDescriptorSize())
它返回 True 用于 DetectorSize 和 26676 用于 DescriptorSize
【问题讨论】:
标签: python opencv machine-learning computer-vision svm