当我使用SVM的trainAuto方法时,得到^{cd1>}的值2,但是当我在代码中使用^{cd2>}时,它会训练我的文件并输出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')
以上代码对我很有用。但是当我用下面的代码移动到预测部分时
^{pr2}$显示以下错误
^{pr3}$但当我用线性改变RBF时,它对我的预测是有效的。
当我检查
^{pr4}$它返回^{cd3>}用于DetectorSize,并为描述符返回^{cd4>}
OpenCV无法接受非线性核的支持向量机。在
首先,official documentation表示:
很明显,您只将支持向量机的系数(作为单个数组)传递给
HOGDescriptor
,而不是种类的(线性、RBF和多项式是最常见的)和/或特定于它的参数(RBF的多项式或gamma阶数)。所以底层的OpenCV检测器无法计算出内核的种类。它不必,因为唯一实现的是线性的。在{a3}还有^问题}。在
相关问题 更多 >
编程相关推荐