6.8-6.11

6.8

  1. 特征点的计算和描述子的计算可以用OpenCV中实现好的类,比如ORB类实例化一个对象,然后调用对象的detect方法计算关键点位置,compute方法计算描述子
  2. DMatch中distance是描述子的距离,而不是两个匹配点之间坐标的距离,所以是越小越好。然后距离是根据匹配的方法不同而不同,比如如果用NORM_HAMMING就是汉明距离,整数,如果是L2则是浮点数
  3. 如何输出描述子可以查看http://blog.csdn.net/aptx704610875/article/details/51503149,这是ORB的描述子

6.9

  1. 关于static

    • 出现在类体外的函数定义不能指定关键字static;
    • 静态成员之间可以相互访问,包括静态成员函数访问静态数据成员和访问静态成员函数;
    • 非静态成员函数可以任意地访问静态成员函数和静态数据成员;
    • 静态成员函数不能访问非静态成员函数和非静态数据成员;
    • 调用静态成员函数,可以用成员访问操作符(.)和(->)为一个类的对象或指向类对象的指针调用静态成员函数,也可以直接用类名::静态成员函数名调用
  2. 关于const

    • 阻止一个变量被改变,可以使用const关键字。在定义该const变量时,通常需要对它进行初始化,因为以后就没有机会再去改变它了
    • 对指针来说,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const
    • 在一个函数声明中,const可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值
    • 对于类的成员函数,若指定其为const类型,则表明其是一个常函数,不能修改类的 成员变量,这时候const放函数名字和{}中间,即void f() const {}
    • 对于类的成员函数,有时候必须指定其返回值为const类型,以使得其返回值不为“左值”,比如const int f() {return attribute}这样
  3. 关于重载、重写、重定义

    • 重载:函数名相同,函数的参数个数、参数类型或参数顺序三者中必须至少有一种不同。函数返回值的类型可以相同,也可以不相同。发生在一个类内部。
    • 重定义:也叫做隐藏,子类重新定义父类中有相同名称的非虚函数 ( 参数列表可以不同 ) ,指派生类的函数屏蔽了与其同名的基类函数。发生在继承中。
    • 重写:也叫做覆盖,一般发生在子类和父类继承关系之间。子类重新定义父类中有相同名称和参数的虚函数。

6.10

  1. OpenCV3对比OpenCV2.4在3D Reconstruction方面多了一些函数,虽然findFundamentalMat两者都有,但是比如decomposeEssentialMat,recoverPose,findEssentialMat这些OpenCV2.4中都没有.
  2. fundamental矩阵利用的是归一化平面的点,即z轴坐标为1的投影点,所以不需要相机内参,而essential矩阵则用到了内参矩阵K,所以求解的时候需要多两个参数,一个是焦距fx,fy还有一个是像素中心cx和cy
  3. decomposeEssentialMat通过SVD分解,求解出两种可能的旋转矩阵R1和R2,和两个t(互为相反数),而在recoverPose中会做检验得出正确的R和t
  4. 对于InputArray类型,可能是Mat也可能是Vector,如果是Vector,可以用getMat再convertTo转成Mat类型,比如v.getMat().convertTo(m,CV_64F)
  5. 求解两个图片的相对运动,特征提取&描述子匹配占的时间非常多,0.03-0.04s,而剩下的求解本质矩阵,本质矩阵分解,都是千分之一秒和万分之一秒级别的,求解单应矩阵和基础矩阵时间也是万分之一秒级别以下的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值