2

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

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

for (size_t i = 0; i <squares.size(); i++) {
    
        RotatedRect box= cv::minAreaRect(Mat(squares[i]));

哪里squares是返回的向量findSquares()

现在我的问题是:当我box.angle在终端上打印时,我看到了一个奇怪的行为。有,在这张图片中 在此处输入图像描述

box.angle正确的(大约是 0°)。但是,当我稍微改变我的相机位置时,box.angle变成了大约 -88°,正如你在第二张图片中看到的那样: 在此处输入图像描述

我不明白为什么!!!!

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

谢谢!

4

1 回答 1

2

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

亲切的问候,大卫

于 2013-03-21T10:37:00.153 回答