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 ) //顶点的小数点位数