【问题标题】:Rotation matrix openCV旋转矩阵openCV
【发布时间】:2016-02-02 00:13:18
【问题描述】:

我想知道如何找到帧中一组特征的旋转矩阵。 我会更具体。我有 2 个具有 20 个特征的帧,比如说第 1 帧和第 2 帧。我可以估计两个帧中特征的位置。例如,假设位置 (x, y) 的某个帧 1 特征,我确切地知道它在哪里,所以我们说 (x',y')。

我的问题是特征被移动并且可能旋转了,所以我想知道如何计算旋转矩阵,我知道 2D 的旋转矩阵:

但我不知道如何计算角度,以及如何计算?我在 OpenCV 中尝试了一个函数 cv2DRotationMatrix(); 但正如我上面提到的我不知道如何计算旋转矩阵的角度以及它给出 2*3 矩阵的另一个问题,所以它不会工作原因如果我将采用这个 20*2 矩阵,(20 是特征数,2 是 (x,y) 中的位置)并将其乘以矩阵乘以 2*3,这是函数的结果,然后我将获得 20*3 矩阵,这似乎不现实,因为我正在使用 2D。
所以我该怎么做?再具体一点,告诉我如何计算角度以在矩阵中使用它?

【问题讨论】:

    标签: math opencv


    【解决方案1】:

    我不确定我是否理解您的问题,但如果您想找出任意变换产生的旋转角度...

    一个简单的技巧是变换点 [0 0] 和 [1 0] 并获取从第一个变换点到第二个变换点的光线角度。

    o = M • [0 0]
    x = M • [1 0]
    d = x - o
    θ = atan2(d.y, d.x)
    

    这不考虑倾斜和其他非正交变换,“角度”的概念是模糊的。

    【讨论】:

    • 非常感谢您的回答,我试过这样:angle1 = atan2( (double) p.y - q.y, (double) p.x - q.x );但我不确定会这样。非常感谢,现在我可以继续了。
    【解决方案2】:

    看看这个函数:

    cvGetAffineTransform

    你在第一帧给它三分,在第二帧给它三分。并计算仿射变换矩阵(平移+旋转)

    如果你愿意,你也可以试试

    cvGetPerspectiveTransform

    有了它,你可以得到翻译+旋转+倾斜+很多其他的。

    【讨论】:

    • 感谢您的评论,我服用了atna2,效果非常好
    猜你喜欢
    • 2015-03-24
    • 1970-01-01
    • 2015-01-07
    • 1970-01-01
    • 2013-01-27
    • 1970-01-01
    • 2019-02-08
    • 1970-01-01
    • 2013-02-09
    相关资源
    最近更新 更多