[解決済み] OpenCVのPythonインターフェースは何が違うのですか?
疑問点
以下のものがあります。
-
opencv
(OpenCVの人たちのライブラリ)。 -
cv
(OpenCV の人たちによる古いライブラリ) と -
pyopencv
前身となるctypes-opencv
.
主な違いと、どちらを使うべきですか?
どのように解決するのですか?
OpenCV は公式には,2種類の Python インターフェースを公開しています.
cv
と
cv2
.
cv:
私が仕事を始めたのは
cv
. これでは,OpenCV のすべてのデータ型がそのまま保存されます.例えば,画像を読み込む場合,その形式は
cvMat
のようになります.
配列の操作のために、いくつかの関数があります。
cvSet2D
,
cvGet2D
など。そして、いくつかの議論では、それらはより遅いということです。
imageROIでは、以下のような特殊な関数が必要です。
cvSetImageROI
.
輪郭を見つけたら
cvSeq
構造体が返されますが、これはPythonのリストやNumPyの配列と比較すると、あまり良い働きではありません。
(そして、私はすぐにその開発は停止されると思います。以前は
cv
. その後,OpenCV には
cv
と
cv2
. 現在では、最新のリリースでは
cv2
モジュールと
cv
の中のサブクラスです。
cv2
. を呼び出す必要があります。
import cv2.cv as cv
を呼び出してアクセスする必要があります)。
cv2です。
そして、最新のものは
cv2
. この中で、すべてが
NumPy
のようなオブジェクトで返されます。
ndarray
と
native Python
のようなオブジェクトを
lists
,
tuples
,
dictionary
などです。つまり、このNumPyのサポートにより、ここであらゆるnumpyの演算を行うことができる。
NumPy
は非常に安定で高速な配列処理ライブラリです。
例えば、画像を読み込むと、その画像に対応した
ndarray
が返されます。
array[i,j]
は、(i,j)の位置の画素値を返します。
また、imageROIの場合、配列スライスは以下のように使うことができます。
ROI=array[c1:c2,r1:r2]
. 別の関数は必要ありません。
2つの画像を追加するには、何の関数も呼び出す必要はなく、単に
res = img1+img2
. (ただし、NumPyの加算は、画像のようなuint8配列ではモジュロ演算となります。記事を参照してください。
OpenCVとNumpyの行列演算の違い
をご覧ください。
返されるContoursはNumpy配列のリストです。Contoursについての詳しい説明は Contours - 1 : 入門 .
要するに、cv2 を使えば、すべてが単純化され、かなり速くなるのです。
NumPyがどのように高速化するかについての簡単な議論
cv2
はStack Overflowの質問で
OpenCV-Python インタフェース,cv と cv2 の性能比較.
.
pyopencv :
使っていないのでよくわかりません。ただ、これ以上の開発は止まっているようです。
公式のライブラリにこだわった方が良いと思います。
要するに、cv2 を使うことをお勧めします!
EDIT: インストールの手順については
cv2
モジュールのインストール手順を
WindowsでPython用OpenCVをインストールする
.
関連
-
[解決済み] urllib、urllib2、urllib3、requestsモジュールの違いは何ですか?
-
[解決済み] PandasでDataFrameの行を反復処理する方法
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] pipでPythonの全パッケージをアップグレードする方法
-
[解決済み] Pythonで標準エラー出力するには?
-
[解決済み] Pythonの旧スタイルのクラスと新スタイルのクラスの違いは何ですか?
-
[解決済み】__str__と__repr__の違いは何ですか?
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
-
[解決済み】venv, pyvenv, pyenv, virtualenv, virtualenvwrapper, pipenvなどの違いは何ですか?
-
[解決済み] あるメソッドが複数の引数のうち1つの引数で呼び出されたことを保証する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Pythonのキャッシュライブラリはありますか?
-
[解決済み] googletransがエラー 'NoneType' オブジェクトに 'group' 属性がない、と言って動かなくなった。
-
[解決済み] dict を txt ファイルに書き、それを読み取る?
-
[解決済み] Django Rest Framework ファイルアップロード
-
[解決済み] Pythonで0xを使わずにhex()を使うには?
-
[解決済み] PyMongoで.sortを使用する
-
[解決済み] サブフォルダからのインポートモジュール
-
[解決済み] Django で全てのリクエストヘッダを取得するにはどうすれば良いですか?
-
[解決済み] Celeryタスクのユニットテストはどのように行うのですか?
-
[解決済み] Pythonでファイルの読み込みと上書きをする