2013-02-03 30 views
2

我使用OpenCV库(Win7 x64和Visual Studio 2010)。RotatedRect角度 - 奇怪的行为改变相机位置略微

我的工作是检测经常旋转的矩形。 为了检测该矩形中,我使用的OpenCV squares.cpp,比我使用由findSquares()返回的点以创建RotatedRect,以这种方式:

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

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

squares哪里是findSquares()返回的载体。

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

box.angle是正确的(大约0°)。 但是,当我稍微改变我的相机位置,box.angle成为各地-88°,你可以在这个第二图像看到: enter image description here

我不明白为什么!!!!

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

谢谢!

+0

也打印矩形的宽度和高度,你会看到一切都是正确的。 –

回答

2

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

亲切的问候,大卫