C++ cv::TermCriteria在opencv中如何工作?
我想使用opencv函数C++ cv::TermCriteria在opencv中如何工作?,c++,opencv,C++,Opencv,我想使用opencv函数cv::cornerSubPix(),因为我需要另一个函数,cv::TermCriteria我的问题是关于此函数的最后一个参数: cv::TermCriteria(cv::TermCriteria::MAX_ITER + cv::TermCriteria::EPS, 50, // max number of iterations 0.0001)); // min accurac
cv::cornerSubPix()
,因为我需要另一个函数,cv::TermCriteria
我的问题是关于此函数的最后一个参数:
cv::TermCriteria(cv::TermCriteria::MAX_ITER +
cv::TermCriteria::EPS,
50, // max number of iterations
0.0001)); // min accuracy
这里的最小精度是什么意思 这里是TermCriteria的OpenCV文档,最后一个参数是epsilon。有些算法是迭代的,当达到期望的精度时停止
在这里查找cv::cornerSubPix()函数的实现TermCriteria的结构是
TermCriteria(
int type, // CV_TERMCRIT_ITER, CV_TERMCRIT_EPS, or both
int maxCount,
double epsilon
);
通常我们使用TermCriteria()函数来生成所需的结构。这个
此函数的第一个参数是CV\u TERMCRIT\u ITER或CV\u TERMCRIT\u EPS,它告诉算法,我们希望在一定次数的迭代后或
收敛度量(分别)达到某个小值。接下来的两个论点
设置一个、另一个或两个条件终止算法的值
我们拥有这两个选项的原因是,我们可以将类型设置为CV\u TERMCRIT\u ITER|
CV_TERMCRIT_EPS,因此在达到任一极限时停止。ε项的确切含义取决于终止标准的算法。(有关
cvTermCriteria
的更多详细信息,请参见本书第299-300页)
具体而言,这里来自:
。。。拐角位置细化过程在以下两种情况下停止:
criteria.maxCount
迭代次数或拐角位置移动时
小于标准。在某些迭代中epsilon
因此,ε项指定了亚像素值所需的精度,例如
0.0001
的值意味着您要求的亚像素值精度为像素的1/10000。(见本书第321页)我发现这里的答案并不详细。你找到一个很好的解释了吗?我现在正在努力理解它,但我找不到任何好的解释。@Crash ID:\我不抱歉,我不再使用OpenCV,所以祝你的项目好运好的,无论如何谢谢:)