计算C ++中两点之间的角度,得到奇怪的结果

时间:2015-03-22 03:29:44

标签: c++ opencv trigonometry

我试图在visual studio 2013中使用OpenCV C ++计算两点之间的角度。一点是跟踪对象,另一点是我点击鼠标的位置。然而,对于我的代码,我得到了一个非常长且波动的答案,似乎不正确......

代码提取:

float angle = (atan2(mousex - posX, mousey - posY) * 180) / 3.14159265;
                sprintf_s(textA, "%d", angle);
                putText(imgOriginal, textA, Point(posX, posY + 20),
    FONT_HERSHEY_COMPLEX_SMALL, 0.8, Scalar(200, 200, 250), 1, CV_AA);

我已经包括但仍然没有结果。

我得到的结果在50368和10732之间波动(在同一地点)。

所以,如果有人能帮助我,我将不胜感激!

谢谢。

1 个答案:

答案 0 :(得分:1)

您的代码存在许多问题。

正如@kuroineko在评论中提到的那样:

atan2首先获取y分量。如果您以错误的顺序传递参数,则计算旋转90°的角度。此外,您的角度为float,因此在%d中使用sprintf会输出垃圾。