cv::TermCriteria如何在opencv中工作
how does cv::TermCriteria work in opencv?
我想使用 opencv 函数cv::cornerSubPix()
为此我需要另一个函数,cv::TermCriteria
我的问题是关于这个函数的最后一个参数:
cv::TermCriteria(cv::TermCriteria::MAX_ITER +
cv::TermCriteria::EPS,
50, // max number of iterations
0.0001)); // min accuracy
这里的最小精度是什么意思?
TermCriteria 的结构是
TermCriteria(
int type, // CV_TERMCRIT_ITER, CV_TERMCRIT_EPS, or both
int maxCount,
double epsilon
);
通常我们使用 TermCriteria() 函数来生成我们需要的结构。这该函数的第一个参数是 CV_TERMCRIT_ITER 或 CV_TERMCRIT_EPS,它告诉算法我们想要在一定次数的迭代后或当收敛度量分别达到一些小值。接下来的两个参数设置其中一个、另一个或两个条件应终止算法的值。
我们同时拥有这两个选项的原因是,我们可以将类型设置为 CV_TERMCRIT_ITER |CV_TERMCRIT_EPS,因此在达到任一限制时停止。
epsilon 项的确切含义取决于终止标准所针对的算法。(有关cvTermCriteria
的更多详细信息,请参阅Learning OpenCV书籍的第299-300页)
在这里,具体来说,来自文档:
。拐角位置细化过程在之后停止
criteria.maxCount
迭代或角位置移动时 在某些迭代中小于criteria.epsilon
。
因此,epsilon 项指定了子像素值所需的精度,例如,值为 0.0001
表示您要求的子像素值精度低至像素的 1/10000。(见《学习OpenCV》一书第321页)
TermCriteria 的 OpenCV 文档在这里 http://docs.opencv.org/modules/core/doc/basic_structures.html#termcriteria 最后一个参数是 epsilon。某些算法是迭代的,并在达到所需的精度时停止。
在这里查找 cv::cornerSubPix() 函数的实现 https://github.com/Itseez/opencv/blob/master/modules/imgproc/src/cornersubpix.cpp
- CV_OCL_RUN宏如何在OpenCV(版本3.4.5)的goodFeaturesToTrack实现中工作?
- 如果不在窗口 10 中声明名为 openCV 的 openCV namedWindow,QT 图像显示将无法正常工作
- OpenCV Tracker 属性访问在 ARM 上因 SEGFAULT 而失败,但在 X86_64 中工作
- OpenCV:文件存储操作员">>"在一个项目中工作,但不在另一个项目中工作(在同一类上)
- C++ / CannyEdgeDetection.exe 已停止工作 代码块 /OpenCV 错误:断言失败
- OPENCV标准视差图无法正常工作
- OpenCV 3.2 在抓取时提供选择超时,但 fscyber 可以工作
- OpenCV的"calcCovarMatrix"函数中"const Mat*样本"参数的工作原理?
- Opencv - filter2D() 方法实际上是如何工作的?
- 带有OpenCv 2.4的Firewire相机.不工作
- Flann Matcher火车在OpenCV中如何工作
- 解释在opencv中实现的阴影检测代码的工作原理
- OpenCV,dlib - 函数中的图像类型转换失败;在外面工作
- BOOST::线程工作线程同步,C++和OpenCV
- 在不复制数据的情况下将OpenCV Mat发送到MATLAB工作区的方法
- cv::TermCriteria如何在opencv中工作
- convertTo不在opencv中工作
- opencv是如何工作的
- OpenCV 3.0.0 C++:无法使knn->load("file.yml")工作
- 调整图像大小后OpenCV VideWriter无法工作