2

OpenCV ライブラリ (Win7 x64 および Visual Studio 2010) を使用しています。

私の仕事は、回転することが多い長方形を検出することです。長方形を検出するためにsquares.cpp、OpenCv を使用し、返されたポイントを使用し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と、この 2 番目の画像でわかるように、約 -88° になります。 ここに画像の説明を入力

理由がわかりません!!!!

なぜこの奇妙な振る舞いを知っている人はいますか???

ありがとう!

4

1 に答える 1

2

正方形の頂点が返される順序によって異なります。左下の点から開始すると、角度は正しく -0.89º になり、ゼロになる傾向があることを考慮してください。返された最初の頂点が右下の場合は、-89.1º です。これは、0.89 -90 とほぼ同じです。輪郭点が返される順序によって異なります。心配する必要はありません。輪郭点の順序に応じて、0、90、180、または 270 になる傾向があるものはすべて良い結果です。

敬具、デビッド

于 2013-03-21T10:37:00.153 に答える