前言
opencv用的多了,就会发现很多方法不是直接调用就能达到效果的。为了达到最优效果,通常需要对参数进行适当调整,然后与不同方法配合使用。比如sift的效果,比如calibrate的计算结果等。。。
12.25 一些新的体悟:如果不知道算法原理,这次调好了,下次又要花很多时间,所以要花时间攻略它。
正文
本文罗列一下实践中的发现的技巧
1 sift算法
sift算法在一开始直接使用,效果让我感觉大大的意外,貌似没有传说中的牛掰。sift匹配乱糟糟有木有。实际上好像是我不太会用。
sift是最近才稍微懂一点点的,相关文章很多,这里推荐一篇
https://www.cnblogs.com/jiahenhe2/p/7919356.html
从中我最后学到了很多东西,利用金字塔处理尺寸缩放,利用高斯去噪,利用差分提取高频信息(轮廓),利用关键点邻域梯度生成的向量作为描述子,通过计算欧式距离进行匹配。
小技巧:实验的时候发现使用knnmatch匹配效果很不错,然后再来个金字塔什么的就更棒棒哒。
2 calibrate
位姿估计最近用的多,自然少不了opencv的solvePnP,实验发现,该方法不太稳定,会产生两种值,一种是相对正确的,一种则相反。
小技巧:使用预置的RT,别忘了后面的开关
3 UMat与Mat互相转换
仅用copyTo,避免不必要的麻烦