CvTermCriteria

本文深入探讨了CvTermCriteria的概念及其在迭代算法中的应用,包括终止准则的类型、最大迭代次数和结果精确性的设定。通过构造函数解析,展示了如何根据需求配置终止条件。
CvTermCriteria  
迭代算法的终止准则  
#define CV_TERMCRIT_ITER    1  
#define CV_TERMCRIT_NUMBER  CV_TERMCRIT_ITER  
#define CV_TERMCRIT_EPS     2  
  
typedef struct CvTermCriteria  
 {  
  int    type;  /* CV_TERMCRIT_ITER 和CV_TERMCRIT_EPS二值之一,或者二者的组合 */  
  int    max_iter; /* 最大迭代次数 */  
  double epsilon; /* 结果的精确性 */  
 }  
 CvTermCriteria;  
/* 构造函数 */  
inline  CvTermCriteria  cvTermCriteria( int type, int max_iter, double epsilon );  
/* 在满足max_iter和epsilon的条件下检查终止准则并将其转换使得type=CV_TERMCRIT_ITER+CV_TERMCRIT_EPS */  
CvTermCriteria cvCheckTermCriteria( CvTermCriteria criteria,  
                                    double default_eps,  
                                    int default_max_iters ); 
提供的引用内容未提及cvCalcOpticalFlowPyrLK的修改方法。cvCalcOpticalFlowPyrLK是OpenCV中用于计算稀疏光流的函数,一般修改该函数的使用方式,可从函数的参数入手。其函数原型如下: ```cpp void cvCalcOpticalFlowPyrLK( const CvArr* prevImg, const CvArr* nextImg, const CvArr* prevPyr, const CvArr* nextPyr, const CvPoint2D32f* prevFeatures, CvPoint2D32f* nextFeatures, int count, CvSize winSize, int level, char* status, float* track_error, CvTermCriteria criteria, int flags ); ``` 以下为可能的修改方向及示例: ### 修改窗口大小 改变`winSize`参数可调整光流计算时的窗口大小,影响光流计算的精度和速度。例如,将窗口大小调整为`(31, 31)`: ```cpp cvCalcOpticalFlowPyrLK( IMG[J], IMG[I], PYR[J], PYR[I], points[1], points[2], nPts, cvSize(31, 31), Level, status, 0, cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS, 20, 0.03), CV_LKFLOW_INITIAL_GUESSES | CV_LKFLOW_PYR_A_READY | CV_LKFLOW_PYR_B_READY ); ``` ### 修改迭代终止条件 修改`criteria`参数可调整迭代的终止条件。例如,将最大迭代次数调整为`30`,误差阈值调整为`0.01`: ```cpp cvCalcOpticalFlowPyrLK( IMG[J], IMG[I], PYR[J], PYR[I], points[1], points[2], nPts, cvSize(win_size, win_size), Level, status, 0, cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS, 30, 0.01), CV_LKFLOW_INITIAL_GUESSES | CV_LKFLOW_PYR_A_READY | CV_LKFLOW_PYR_B_READY ); ``` ### 修改标志位 修改`flags`参数可启用或禁用某些特性。例如,去掉`CV_LKFLOW_PYR_A_READY`和`CV_LKFLOW_PYR_B_READY`标志: ```cpp cvCalcOpticalFlowPyrLK( IMG[J], IMG[I], PYR[J], PYR[I], points[1], points[2], nPts, cvSize(win_size, win_size), Level, status, 0, cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS, 20, 0.03), CV_LKFLOW_INITIAL_GUESSES ); ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值