我使用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]));
其中squares
是findSquares()
返回的向量。
现在我的问题是:当我在终端上打印box.angle
时,我看到一种奇怪的行为。在这张图片中有
box.angle
是正确的(大约是0°)。
但是,当我略微改变我的相机位置时,box.angle
变成-88°左右,正如您在第二张图片中看到的那样:
我不明白为什么!!!!
有谁知道为什么这种奇怪的行为???
谢谢!
答案 0 :(得分:2)
这取决于你的方形顶点返回的顺序。考虑到如果从左下角开始,你的角度正确-0.89º,趋向于零。如果返回的第一个顶点是右下角,则为-89.1º。与0.89 -90相同的aprox。 它只取决于返回轮廓点的顺序。 所以不要担心,根据轮廓点的顺序,任何倾向于0,90,180或270的东西都是一个很好的结果。
亲切的问候,大卫