簡體   English   中英

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_ITERCV_TERMCRIT_EPS ,它告訴算法我們想要在一定次數的迭代之后或者當收斂度量達到某個小值(分別)時終止。 接下來的兩個參數設置這些條件中的一個,另一個或兩個應該終止算法的值。

我們有這兩個選項的原因是我們可以將類型設置為CV_TERMCRIT_ITER | CV_TERMCRIT_EPS因此在達到任一限制時停止。

epsilon項的確切含義取決於終止標准所針對的算法。 (見的第299-300 學習OpenCV的書上的一些細節cvTermCriteria

在這里,具體來說,來自文檔

...角點位置細化的過程要么在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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM