OpenCV从T形机身获得360度旋转

时间:2015-02-25 10:01:11

标签: c++ opencv rotation orientation

我是这个论坛的新手,希望你能耐心等待我。 我即将编写我自己的视觉系统,它只跟踪一种特征(引脚),总是在我检测到的物体的方向上遇到麻烦。 我确实从特征向量获得了方向,但仅在+ -90度的范围内。见下文。

http://i.stack.imgur.com/KHx1h.jpg

如果有帮助的话,我正在使用OpenCV 2.4.9和visual studio 2012。

我使用findContours函数来获取X和Y. PCA analasys获得方向(theta)。 我尝试过其他星座(SIFT,SURF,模板匹配),但这种方法似乎能给出最好的结果。

这只是一个布尔运算符的问题,如果我得到一个信号,我可以手动翻转方向。

用于跟踪的二进制图像如下所示,是否有任何方法可以提取图片中的“帽子”功能并将其用作信号?

http://i.stack.imgur.com/9y4XX.jpg

BR

纳斯

2 个答案:

答案 0 :(得分:0)

在找到轮廓之前,您可能需要应用某种阈值。因为您拥有的轴是数据点差异最大的轴。我建议使用带有微调参数的canny。

答案 1 :(得分:0)

供进一步参考..
我通过模板匹配解决了它,这是作弊,我知道 模板在由PCA分析计算的角度中旋转(由其中心包裹/保持),然后将匹配值存储在临时变量中。我使用相同的模板进行另一场比赛,但旋转180度并比较匹配值 作为参考,模板图片必须相对于相机旋转进行角度校准(我通过滑块进行)。它是一个静态值,仅取决于模板创建时的旋转。换句话说......
Wrapaffline_angle = Calibrated_angle + PCA角度 该过程的图片如下所示:
http://i.stack.imgur.com/r6RD8.jpg

Calibration_angle旨在最大化两场比赛之间的差异。