Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ cv::TermCriteria在opencv中如何工作?_C++_Opencv - Fatal编程技术网

C++ cv::TermCriteria在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

我想使用opencv函数
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 ITERCV\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,所以祝你的项目好运好的,无论如何谢谢:)