在进行相机标定的时候我们常常看到这么一句代码
criteria=(cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)
这句代码是 OpenCV 中用于设置迭代算法终止条件的一个语句
其中
cv2.TERM_CRITERIA_EPS
和cv2.TERM_CRITERIA_MAX_ITER
:cv2.TERM_CRITERIA_EPS
表示当迭代的变化量小于某个阈值(即精度)时停止。cv2.TERM_CRITERIA_MAX_ITER
表示当达到最大迭代次数时停止。- 两者通过
+
组合,表示“满足任意一个条件时即可停止”。
30
:- 最大迭代次数。如果算法在 30 次迭代内没有达到精度要求,也会停止。
0.001
:- 精度阈值。如果算法的变化量(例如聚类中心的变化)小于 0.001,则认为已经收敛,停止迭代。
我们可以从英文的意思去更加理解它
- TERM:表示“终止条件”(Termination Criteria)。
- CRITERIA:表示“准则”或“标准”。
- EPS:表示“Epsilon”,即“精度阈值”。通常表示一个非常小的正数,用于表示精度或误差的阈值。它是一个符号,用于定义算法何时可以认为已经“足够接近”目标值,从而停止迭代或计算。
- MAX_ITER: Maximum Iterations(最大迭代次数)。