• OPENCV重要函数


    本节用来总结SLAM学习过程中,用到的重要的opencv函数

    CalcopticalFlowPyrLK()

    功能

    使用具有金字塔的迭代Lucas-Kanade方法计算稀疏特征集的光流。

    void cv::calcOpticalFlowPyrLK	(	
    InputArray prevImg,
    InputArray nextImg,
    InputArray prevPts,
    InputOutputArray nextPts,
    OutputArray status,
    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
    )

    参数:

    • prevImg :buildOpticalFlowPyramid构造的第一个8位输入图像或金字塔。
    • nextImg :与prevImg相同大小和相同类型的第二个输入图像或金字塔
    • prevPts :需要找到流的2D点的矢量(vector of 2D points for which the flow needs to be found;);点坐标必须是单精度浮点数。
    • nextPts :输出二维点的矢量(具有单精度浮点坐标),包含第二图像中输入特征的计算新位置;当传递OPTFLOW_USE_INITIAL_FLOW标志时,向量必须与输入中的大小相同。
    • status :输出状态向量(无符号字符);如果找到相应特征的流,则向量的每个元素设置为1,否则设置为0。
    • err :输出错误的矢量; 向量的每个元素都设置为相应特征的错误,错误度量的类型可以在flags参数中设置; 如果未找到流,则未定义错误(使用status参数查找此类情况)。
    • winSize :每个金字塔等级的搜索窗口的winSize大小。
    • maxLevel :基于0的最大金字塔等级数;如果设置为0,则不使用金字塔(单级),如果设置为1,则使用两个级别,依此类推;如果将金字塔传递给输入,那么算法将使用与金字塔一样多的级别,但不超过maxLevel。
    • criteria :参数,指定迭代搜索算法的终止条件(在指定的最大迭代次数criteria.maxCount之后或当搜索窗口移动小于criteria.epsilon时)。
    • flags :操作标志:
    • OPTFLOW_USE_INITIAL_FLOW:使用初始估计,存储在nextPts中;如果未设置标志,则将prevPts复制到nextPts并将其视为初始估计。
    • OPTFLOW_LK_GET_MIN_EIGENVALS:使用最小特征值作为误差测量(参见minEigThreshold描述);如果没有设置标志,则将原稿周围的色块和移动点之间的L1距离除以窗口中的像素数,用作误差测量。
    • minEigThreshold :算法计算光流方程的2x2正常矩阵的最小特征值,除以窗口中的像素数;如果此值小于minEigThreshold,则过滤掉相应的功能并且不处理其流程,因此它允许删除坏点并获得性能提升。
      该函数实现了金字塔中Lucas-Kanade光流的稀疏迭代版本。

    cv::circle()

    功能:画圆

    void circle(CV_IN_OUT Mat& img, Point center, int radius, const Scalar& color, int thickness=1, int lineType=8, int shift=0);

    参数

    • img:图像,单通道多通道都行,不需要特殊要求
    • center:画圆的圆心坐标
    • radius:圆的半径
    • color:设定圆的颜色,比如用CV_RGB(255, 0,0)设置为红色, CV_RGB(255, 255,255)设置为白色,CV_RGB(0, 0,0)设置为黑色
    • thickness:为设置圆线条的粗细,值越大则线条越粗,为负数则是填充效果

    goodFeaturesToTrack

    _image:8位或32位浮点型输入图像,单通道

    _corners:保存检测出的角点

    maxCorners:角点数目最大值,如果实际检测的角点超过此值,则只返回前maxCorners个强角点

    qualityLevel:角点的品质因子

    minDistance:对于初选出的角点而言,如果在其周围minDistance范围内存在其他更强角点,则将此角点删除

    _mask:指定感兴趣区,如不需在整幅图上寻找角点,则用此参数指定ROI

    blockSize:计算协方差矩阵时的窗口大小

    useHarrisDetector:指示是否使用Harris角点检测,如不指定,则计算shi-tomasi角点

    harrisK:Harris角点检测需要的k值

    cv::goodFeaturesToTrack(cur_img, n_pts, MAX_CNT - cur_pts.size(), 0.01, MIN_DIST, mask); //VINS_Fusion中的应用
  • 相关阅读:
    iOS 沙盒机制 持久存储 读写文件 NSFileManager
    关键字@synchronized
    整理UIImagePickerController、保存图片到相册问题
    关于MJRefresh的下拉加载数据bug
    tableView显示第一个cell有偏移问题
    iOS比较常用的第三方框架
    iOS 10 下的用户隐私访问相册等权限问题!
    diff: /../Podfile.lock: No such file or directory diff: /Manifest.lock: No such file or directory error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods in
    iOS的坑:ERRORITMS-90096: "Your binary is not optimized for iPhone 5
    CocoaPods 1.0之前版本无法pod install和pod update! 更新后CocoaPods 1.1.1 Podfile新的写法.
  • 原文地址:https://www.cnblogs.com/guoben/p/13339270.html
Copyright © 2020-2023  润新知