2013-02-03 31 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的任何東西都是很好的結果。

親切的問候,大衛