opencv函数

 cv::resize(InputArray src,
            OutputArray dst,
            Size dsize,
            double fx=0,
            double fy=0,
            int interpolation=INTER_LINEAR );
  • Src- Source image.
  • Dst-Destination image.
  • Dsize-目标图像大小. 如果是0, 计算公式:dsize = Size(round(fx*src.cols), round(fy*src.rows)). 或者是,fx和 fy必须是非零的。
  • fx-沿水平轴的比例因子. 当为0时, 计算公式: (double)dsize.width/src.cols
  • fy-沿垂直轴的比例因子. 当为0时, 计算公式: (double)dsize.height/src.rows
  • interpolation –插值方法: INTER NEAREST(近邻差值) or INTER LINEAR(双线性差值)
  • Resizes.支持的图像类型(Mat)CV_8UC1, CV_8UC3, CV_8UC4, CV_32FC1 , CV_32FC3 and CV_32FC4
void cvResize(const CvArr* src,
                      CvArr* dst,
                      Int interpolation=CV_INTER_LINEAR );
  • src 输入图像.
  • dst 输出图像.
  • interpolation 差值方法:
  • CV_INTER_NN - 最近邻差值,
  • CV_INTER_LINEAR -  双线性差值 (缺省使用)
  • CV_INTER_AREA -  使用象素关系重采样。当图像缩小时候,该方法可以避免波纹出现。当图像放大时,类似于  CV_INTER_NN 
//检查数组元素是否位于其他数组元素之间
void inRange(InputArray src,      //输入图像
             InputArray lowerb,   // 包含下边界数组或标量
             InputArray upperb,   // 包含的上边界数组或标量
             OutputArray dst)     //输出图像与输入图像的大小相同的cv_8u型

 

对于单通道输入图像:

多通道输入图像:

//检测图像中的强角点
void goodFeaturesToTrack(InputArray image,     //输入的单通道图像
                         OutputArray corners,  //检测出的角点向量
                         int maxCorners,       //检测角点的最大数目。如果有更多的角比被发现,则返回较强的角点
                         double qualityLevel, //最大最小特征值乘法因子
                         double minDistance,  //两个角点之间的最小距离
                         InputArray mask=noArray(),//
                         int blockSize=3,//
                         bool useHarrisDetector=false, //是否使用Harris角点
                         double k=0.04 )

更多资源:http://blog.csdn.net/pi9nc/article/details/12390729(图像处理特征不变算子系列之KLT算子--GoodFeaturesToTrack(七))

             http://blog.csdn.net/xw20084898/article/details/21237589(cvGoodFeaturesToTrack()与goodFeaturesToTrack()进行harris角点检测)

//使用金字塔的Lucas-Kanade方法,计算稀疏特征集的光流。  
void calcOpticalFlowPyrLK(InputArray prevImg,            //8位的单通道图像或通过buildopticalflowpyramid()构造的金字塔
                          InputArray nextImg,            //大小和类型与previmg相同的图像或金字塔
                          InputArray prevPts,           //特征点的原来位置;点坐标必须是单精度浮点数
                          InputOutputArray nextPts,     //为特征点的新位置
                          OutputArray status,           // 输出状态向量;如果对应的特征已被发现,向量的每个元素设置为1,否则,它被设置为0。
                          OutputArray err, 
                          Size winSize=Size(21,21),   //在每层的搜索窗口大小
                          int maxLevel=3,             //金字塔的层数
                          TermCriteria criteria=TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 30, 0.01),
                          int flags=0, 
                          double minEigThreshold=1e-4 )    //该算法计算一个2x2的正规矩阵光流方程的最小特征值,除以窗口中的像素数;如果这个值小于 
                                                          //mineigthreshold,那么相应的功能是过滤出来,其光流是不处理的,所以它可以消除不良点和获 
                                                         //得的性能提升。

 

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 );  

 

AutoBuffer

自动分配的缓冲区 类

该类为函数和方法分配临时缓冲区。如果一个临时的缓冲区通常是小(几K的内存),但其大小取决于参数,在堆中创建一个小的固定大小的数组是有意义的。

在opencv的core.hpp里面有AutoBuffer<>()函数,该函数为自动分配一段指定大小的内存,并且可以指定内存中数据的类型。

 cv::AutoBuffer<float, 1000> buf; //创建一个包含1000 float自动缓冲区

cv::AutoBuffer<float> dbuf(1000);// //创建一个包含1000 float自动缓冲区

//http://blog.csdn.net/lee1054908698/article/details/7361258
//http://blog.sina.com.cn/s/blog_c936dba00102vz0u.html
//cvPolyLine 绘制简单或多样的多边形
C: void cvPolyLine(CvArr* img, 
                   CvPoint** pts,   //折线的顶点指针数组
                   const int* npts, //折线的定点个数数组。也可以认为是pts指针数组的大小
                   int contours,    //折线的线段数量
                   int is_closed,   //多边形是否封闭。如果封闭,函数将起始点和结束点连线
                   CvScalar color,  //折线的颜色
                   int thickness=1, //线条的粗细程度
                   int line_type=8, //线段的类型
                   int shift=0 )    //顶点的小数点位数

 

posted @ 2015-12-14 13:25  xiaoming123abc  阅读(929)  评论(0)    收藏  举报