RotatedRect角度 - 奇怪的行为稍微改变相机位置

时间:2013-02-03 16:33:07

标签: opencv angle rectangles

我使用OpenCV库(Win7 x64和Visual Studio 2010)。

我的工作在于检测经常旋转的矩形。 为了检测矩形,我使用OpenCv的squares.cpp,而不是使用findSquares()返回的点来创建RotatedRect,这样:

for (size_t i = 0; i <squares.size(); i++) {

        RotatedRect box= cv::minAreaRect(Mat(squares[i]));

其中squaresfindSquares()返回的向量。

现在我的问题是:当我在终端上打印box.angle时,我看到一种奇怪的行为。在这张图片中有 enter image description here

box.angle是正确的(大约是0°)。 但是,当我略微改变我的相机位置时,box.angle变成-88°左右,正如您在第二张图片中看到的那样: enter image description here

我不明白为什么!!!!

有谁知道为什么这种奇怪的行为???

谢谢!

1 个答案:

答案 0 :(得分:2)

这取决于你的方形顶点返回的顺序。考虑到如果从左下角开始,你的角度正确-0.89º,趋向于零。如果返回的第一个顶点是右下角,则为-89.1º。与0.89 -90相同的aprox。 它只取决于返回轮廓点的顺序。 所以不要担心,根据轮廓点的顺序,任何倾向于0,90,180或270的东西都是一个很好的结果。

亲切的问候,大卫