/*********************************************************************************************
程序功能:
1--CvTermCriteria---迭代算法终止条件结构体的---OpenCV源码分析
编写环境:
OpenCv2.4.8+VS2010
地点时间:
陕西师范大学 2016.4.22
作者信息:
九月
**********************************************************************************************/
/*********************************** CvTermCriteria *************************************/
//源代码位于types_c.h
//【1】CvTermCriteria---(Termination criteria for iterative algorithms)
//【2】迭代算法的终止条件
#define CV_TERMCRIT_ITER 1
#define CV_TERMCRIT_NUMBER CV_TERMCRIT_ITER
#define CV_TERMCRIT_EPS 2
typedef struct CvTermCriteria
{
//【1】int type--type of the termination criteria,one of:
//【1】int type---迭代算法终止条件的类型,是下面之一:
//【1】CV_TERMCRIT_ITER---在完成最大的迭代次数之后,停止算法
//【2】CV_TERMCRIT_EPS----当算法的精确度小于参数double epsilon指定的精确度时,停止算法
//【3】CV_TERMCRIT_ITER+CV_TERMCRIT_EPS--无论是哪一个条件先达到,都停止算法
int type; /* may be combination of
CV_TERMCRIT_ITER
CV_TERMCRIT_EPS */
//【2】Maximum number of iterations
//【2】最大的迭代次数
int max_iter;
//【3】Required accuracy
//【3】所要求的精确度
double epsilon;
}
CvTermCriteria;
//【2】底下这个函数的功能类似于构造函数,但是看清楚,它并不是构造函数
CV_INLINE CvTermCriteria cvTermCriteria( int type, int max_iter, double epsilon )
{
CvTermCriteria t;
t.type = type;
t.max_iter = max_iter;
t.epsilon = (float)epsilon;
return t;
}
/*********************************************************************************************
*功能描述:
* 上面的--struct CvTermCriteria---迭代算法终止结构体在OpenCv2.x以及更新的版本中,已经被封装
* 成了class TermCriteria类
**********************************************************************************************/
/*!
//迭代算法中的终止条件
Termination criteria in iterative algorithms
*/
class CV_EXPORTS TermCriteria
{
public:
enum
{
COUNT=1, //!< the maximum number of iterations or elements to compute
MAX_ITER=COUNT, //!< ditto
EPS=2 //!< the desired accuracy or change in parameters at which the iterative algorithm stops
};
//! default constructor
//【1】默认构造函数
TermCriteria();
//! full constructor
//【2】完全构造函数
TermCriteria(int type, int maxCount, double epsilon);
//! conversion from CvTermCriteria
//【3】CvTermCriteria结构体和TermCriteria类的转换构造函数
TermCriteria(const CvTermCriteria& criteria);
//! conversion to CvTermCriteria
operator CvTermCriteria() const;
//【4】TermCriteria类的三个数据成员----终止条件的类型,最大迭代次数,所期望的精度
int type; //!< the type of termination criteria: COUNT, EPS or COUNT + EPS
int maxCount; // the maximum number of iterations/elements
double epsilon; // the desired accuracy
};