OpenCV中的cv::TermCriteria是如何工作的?

11

我想使用opencv的函数cv::cornerSubPix(),但我还需要另一个函数,cv::TermCriteria。我的问题是关于这个函数的最后一个参数:

cv::TermCriteria(cv::TermCriteria::MAX_ITER +
                cv::TermCriteria::EPS,
                50, // max number of iterations
                0.0001)); // min accuracy

这里的最小准确率是什么意思?


我看到这里的答案并不是非常详细。你找到了一个关于TermCriteria的好解释吗?我现在正在尝试理解它,但我找不到任何好的解释。 - dephinera
@Crash-ID :抱歉,我不是在使用OpenCV了,祝你的项目好运。 - Engine
好的,无论如何还是谢谢 :) - dephinera
3个回答

10

TermCriteria 的结构如下:

TermCriteria(

int type, // CV_TERMCRIT_ITER, CV_TERMCRIT_EPS, or both

int maxCount,

double epsilon
);

通常我们使用 TermCriteria() 函数来生成所需的结构。此函数的第一个参数为 CV_TERMCRIT_ITERCV_TERMCRIT_EPS,告诉算法我们希望在迭代次数达到某个值或者收敛度达到某个小值时终止计算(分别对应两种情况)。接下来的两个参数设置了这些标准应该终止算法的值。

我们有这两个选项的原因是可以将类型设置为 CV_TERMCRIT_ITER | CV_TERMCRIT_EPS,从而在达到其中任何一个限制时停止。


4
epsilon这个术语的确切含义取决于终止准则所针对的算法。 (有关cvTermCriteria的更多详细信息,请参见Learning OpenCV书的299-300页)
在此,特别是从文档中:
角位置的精细处理过程将在满足以下条件之一时停止:criteria.maxCount次迭代后或当某个迭代中角位置移动小于criteria.epsilon时。
因此,epsilon项指定您需要的亚像素值的精度,例如,0.0001的值表示您要求亚像素值的精度为1/10000像素。(请参见Learning OpenCV书的321页)

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接