【问题标题】:OpenCV Get 360 degree rotaion from T shaped bodyOpenCV 从 T 形体获得 360 度旋转
【发布时间】:2015-03-24 21:07:37
【问题描述】:

我是这个论坛的新手,希望您对我有耐心。 我即将编写自己的视觉系统,该系统将始终只跟踪一种特征(引脚),当涉及到我检测到的身体的方向时会遇到麻烦。 我确实从特征向量中获得了方向,但仅在 +-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

乔纳斯

【问题讨论】:

  • 你能提供代码吗?
  • 当然!只是 sn-ps 还是整个事情?代码的基础取自本教程youtube.com/watch?v=RS_uQGOQIdg。 pca analasys 来自 OpenCV 中的一个示例。代码的哪一部分有趣?

标签: c++ opencv rotation orientation


【解决方案1】:

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

【讨论】:

  • 感谢您的回答@sithereal!我在模板匹配之前应用了 canny,不幸的是我无法发布结果的图片。特征值和结果仍未解决……我将研究“数据点的最大方差”。关于如何继续的任何其他建议?
【解决方案2】:

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

Calibration_angle 旨在最大化两个匹配之间的差异。

【讨论】:

    猜你喜欢
    • 2016-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 2020-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多