96

がある

  • opencv(OpenCVの人たちからのライブラリ)、
  • cv(OpenCVの人たちからの古いライブラリ)そして
  • pyopencvその前任者とctypes-opencv

主な違いは何ですか?どちらを使用すればよいですか?

4

1 に答える 1

147

公式には、OpenCVは2種類のPythonインターフェースをリリースcvしますcv2

履歴書:

私はに取り組み始めましたcv。この場合、すべてのOpenCVデータ型はそのまま保持されます。たとえば、ロードされると、画像はcvMatC++と同じ形式になります。

配列操作の場合、、などのいくつかの関数がありますcvSet2DcvGet2Dまた、一部の議論では、それらは遅いと言われています。

imageROIの場合、のような特別な関数が必要ですcvSetImageROI

等高線が見つかった場合はcvSeq、PythonリストやNumPy配列と比較して操作に適さない構造が返されます。

(そして、すぐに開発が中止されると思います。以前はcv、OpenCVにはとの両方が付属していcvましcv2た。現在、最新のリリースでは、cv2モジュールのみがありcv、内部にサブクラスがありcv2ます。電話する必要があります。import cv2.cv as cvアクセスします。)

cv2:

そして最新のものはcv2です。この場合、すべてが、、、などのオブジェクトとして返されます。 したがって、NumPyこのNumPyのサポートにより、ここで任意のnumpy操作を実行できます。は非常に安定した高速の配列処理ライブラリです。ndarraynative PythonliststuplesdictionaryNumPy

たとえば、画像を読み込むと、ndarrayが返されます。

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

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

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

返される等高線は、Numpy配列のリストです。等高線に関する詳細な説明は、等高線-1:はじめににあります。

つまり、cv2を使用すると、すべてが単純化され、非常に高速になります。

NumPyのスピードアップについての簡単な説明cv2は、StackOverflowの質問にあります。OpenCV-Pythonインターフェイス、cvおよびcv2のパフォーマンス比較

pyopencv

使ったことがないのでよくわかりません。しかし、それはそれ以上の開発を止めたようです。

公立図書館にこだわる方がいいと思います。

つまり、cv2を使用することをお勧めします。

cv2編集:モジュールのインストール手順は、WindowsforPythonにOpenCVをインストールするで確認できます。

于 2012-05-03T05:16:31.807 に答える