2012-05-02 7 views

答えて

116

公式にOpenCVは、2種類のPythonインターフェイス、cvcv2をリリースしました。

CV:

私はcv上で作業を開始。この場合、すべてのOpenCVデータ型はそのまま保持されます。たとえば、ロードされると、イメージはC++の場合と同じフォーマットcvMatになります。

アレイ操作の場合、cvSet2D,cvGet2Dなどのようないくつかの機能があります。いくつかの議論では、それらは遅くなっています。

imageROIには、cvSetImageROIのような特別な機能が必要です。

輪郭が見つかった場合は、cvSeqの構造体が返されます。これはPythonリストやNumPy配列と比較してうまく動作しません。

(そして、私が思うに、すぐにその開発が停止されます。以前、唯一cvがあった。その後、OpenCVのはcvcv2の両方に付属している。今、最新のリリースでは、そこcv2モジュールのみで、cv 。。)あなたがそれにアクセスするためにimport cv2.cv as cvを呼び出す必要がcv2内部のサブクラスである

CV2:

そして最新のものはcv2です。この中で、liststuplesdictionaryなどのようなndarrayおよびnative PythonオブジェクトのようなオブジェクトはすべてNumPyというように返されます。したがって、このNumPyサポートによって、ここでどんなnumpy操作も実行できます。 NumPyは非常に安定した高速アレイ処理ライブラリです。

例えば、画像をロードすると、ndarrayが返されます。

array[i,j]は、(i、j)位置のピクセル値を示します。

また、imageROIの場合、配列スライシングはROI=array[c1:c2,r1:r2]のように使用できます。別々の機能は必要ありません。

2つの画像を追加するには、関数を呼び出す必要はありません。res = img1+img2を実行してください。 (ただし、NumPyの追加は、画像のようなuint8配列のモジュロ演算です。詳細はDifference between Matrix Arithmetic in OpenCV and Numpyを参照してください。

返される輪郭は、Numpy配列のリストです。 Contoursの詳細な説明はContours - 1 : Getting Startedです。

簡潔に言えば、cv2ではすべてが単純化され、かなり高速です。

cv2をスピードアップnumpyの方法についての簡単な議論は、スタックオーバーフローの質問Performance comparison of OpenCV-Python interfaces, cv and cv2です。

pyopencv

私はそれを使用していないので、私はこれについて多くを知りません。しかし、それはさらなる発展を止めたようだ。

私は公式の図書館に固執する方がよいと思います。

要するに、私はcv2を使用することをお勧めします!

EDIT:あなたはInstall OpenCV in Windows for Pythoncv2モジュールのインストール手順を見ることができます。

+0

cv2へのリンクはありますか? – Framester

+0

cv2ソースからOpenCVをビルドする場合は、Pythonインターフェイスがコンパイルされ、インストールされます。 Linuxやその他のOSでバイナリパッケージを使用している場合は、OS /ディストリビューションのドキュメントを参照してください。ヘルプについてはhttp://goo.gl/MUjXiをご覧ください。 –

+1

@Framester:このリンクのcv2のインストール手順をご覧ください:http://opencvpython.blogspot.in/2012/05/install-opencv-in-windows-for-python.html –

関連する問題