2012-08-02 16 views
7

私はPython内からOpenCV関数MinAreaRect2を呼び出そうとしています。 私はOpenCV 2.4.2をpython 2.7とnumpy 1.6で使用しています。 私はここまで行ってきました:Python OpenCV Box2D

import cv 

def nda2ipl(arr, dtype=None): 
    return cv.fromarray(np.ascontiguousarray(arr, dtype=dtype)) 

def min_area_rect2(points): 
    storage = cv.CreateMemStorage() 
    cv_points = nda2ipl(points.reshape((-1, 1, 2))) 
    out = cv.MinAreaRect2(cv_points, storage) 
return out 

を私は形状のndarray(N×2)でこの関数を呼び出すことができます。

((476.5, 604.5), (951.0, 1207.0), -0.0) 

私は最初のタプルは、ボックスの中心であると仮定し、第二は、幅と高さを与え、最後は角度である:私は結果のこの種を取得します。

問題は、これを明示する明確な参照を得ることができなかったことです。実際、opencvのドキュメントは、関数がPythonで何を返すかを教えてくれます。

official documentation about this functionが見つかりましたが、これはあまり役に立ちません。

PythonでのMinAreaRect2の出力は正確に何ですか? もっと一般的には、OpenCV pythonラッパーについての正確な文書はどこにありますか?

答えて

11

OpenCVのPythonラッパーのドキュメントを使用以前のPythonモジュールは、cvれるCvMatなど原C++インタフェースからネイティブ・データ・タイプを使用するインタフェースであったwww.docs.opencv.org

、同じサイト内の通常のドキュメントと共に保持されますcvSeqなど

その後、より高度で高度で簡単なモジュールcv2インターフェイスに移行しました。その中で、すべてはNumpy配列またはネイティブのpythonデータ型として返されます。

ここで返されるタプルは、cvBox2Dの引数と同じです。さまざまなPythonラッパーの違いの詳細については、ここをクリックしてください。What is different between all these OpenCV Python interfaces?

ここでは、正しいことを前提としています。これらの値はあなたが言及したものとまったく同じです。

回転した矩形を描画する場合は、四角形の4つの頂点が必要です。そのためには、すなわちcv2.cv.BoxPoints()、ドキュメントで見たことがないている機能を必要とする(しかし、心配しないでくださいOpenCVの2.4.3がリリースされたとき、それはマニュアルにあるでしょう。)

あなたはこの記事に回転四角形を描画する方法の例を見つけることができます:あなたの答えのためのRotated Rectangle

enter image description here

+0

ありがとうございました! –

+1

どういうわけか、OpenCV 3.0まで、ドキュメントにBoxPointを追加するというあなたのリクエストを[延期しました](http://code.opencv.org/issues/2023) –

1

あなたが連結するドキュメントに記載されているとおり、MinAreaRect2はBox2D objectを返す:正しく仮定としてhereが記載されているように

A CvBox2Dオブジェクトは、その中心、サイズ及び角度によって定義されます。

一般的に言えば、Pythonラッパーのドキュメントはかなり貧弱です。最善の策は、C++のドキュメントを参照してソースコードを読むことです。

+1

感謝を。しかし、Python関数はBox2Dオブジェクトを返すのではなく、Pythonタプルを返します。だから、タプル要素とC++ Box2D構造体との関係について疑問に思った。私はソースコードを見てみましたが、私に答えを与えることができる場所を見つけることができませんでした。 opencvライブラリがPythonにどのようにラップされているかを理解するのは難しいです。これについてのどんなヒントも非常に歓迎されるだろう。 –

+0

この投稿は非常に明確です。http://opencvpython.blogspot.com.es/2012/06/contours-2-brotherhood.html – Antoni