我正在尝试在SVM中使用setTermCriteria。但当我使用它时,出现了以下错误:
AttributeError: 'cv2.ml_SVM' object has no attribute 'setTermCritera_MAX_ITER'
这是我使用它的方式
svm.setTermCritera_MAX_ITER=10000svm.setTermCriteria_EPS = 1e-3
我没有得到错误,但以下的方式使用时,我发现它并不实用:
cv2.setTermCritera_MAX_ITER=10000cv2.setTermCriteria_EPS = 1e-3
当我尝试以下方法时
svm.setTermCriteria(10000)SystemError: new style getargs format but argument is not a tuple
在Python中使用OpenCV正确的方式是什么
回答:
错误信息很清楚,需要一个元组。让我们看看默认值:
svm = cv2.ml.SVM_create()svm.getTermCriteria()
返回 (3, 1000, 1.1920928955078125e-07)
。所以如果你只想设置最大迭代次数,应该调用:
svm.setTermCriteria((cv2.TermCriteria_MAX_ITER, 10000, 0))
如果你想保持相同的epsilon标准并设置最大迭代次数:
svm.setTermCriteria((cv2.TermCriteria_MAX_ITER + cv2.TermCriteria_EPS, 10000, 1.1920928955078125e-07))