我使用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()返回的 vector 。
现在我的问题是:当我在终端上打印box.angle时,我看到一个奇怪的行为。在这张图片中
box.angle是正确的(大约为0°)。
但是,当我稍微改变我的相机位置时,box.angle变为-88°左右,如您在第二幅图像中所见:

我不明白为什么!
有谁知道为什么这种奇怪的行为???
谢谢!

最佳答案

这取决于您返回方形顶点的顺序。请注意,如果从左下角开始,则 Angular 正确为-0.89º,该 Angular 趋于零。如果返回的第一个顶点在右下角,则您处于-89.1º。与0.89 -90相同。
这仅取决于轮廓点的返回顺序。
因此,请放心,根据轮廓点的顺序,趋向于0,90,180或270的任何结果都是很好的结果。

亲切的问候,大卫

关于opencv - RotatedRect角度-奇怪的行为会稍微改变相机的位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14674645/

10-09 13:29