web-dev-qa-db-ja.com

Python AttributeError: 'モジュール'オブジェクトに属性 'DIST_L2'がありません

Pythonでcv2.distanceTransform()メソッドを使用しようとしています。また、次のコード行を実行するとエラーが発生します。

dist_transform = cv2.distanceTransform(opening,cv2.DIST_L2,5)

このコードを実行すると、次のエラーが発生します。

AttributeError: 'モジュール'オブジェクトに属性 'DIST_L2'がありません

同様の質問が以前に行われたことがあり、pythonファイル名が 'something.py'の場合に 'something'をインポートすると、この問題が発生することを知っています。ただし、my pythonファイル名はsegment3.pyです。

誰かがこれを手伝ってくれませんか?流域アルゴリズムを使用してセグメンテーションを実行しようとしています。私はFedora20に取り組んでいます。前もって感謝します!

14
Vartika

以下のように書き直す必要があります。

(dist_transform, labels) = cv2.distanceTransform(opening,cv2.cv.CV_DIST_L2,5) 
24
derjohng

の代わりに cv2.DIST_L2、 使用する:

cv2.cv.CV_DIST_L2

私は同じ問題を抱えていましたが、いくつかの調査の後、 documentation は、代わりにこの定数を使用するソースコード(opencv_source/samples/python2/distrans.py)のサンプルファイルに言及しています。ここでテストしたところ、期待どおりに機能しました。

16
andreterron

これは返信が遅れていますが、実行しているチュートリアルを完了するには、openCV3.0をインストールする必要があります。そうすれば、チュートリアルの構文は正しいです。

OpenCV 3.0の場合:

dist_transform = cv2.distanceTransform(opening, cv2.DIST_L2, 5)

OpenCV 2.xの場合:

dist_transform = cv2.distanceTransform(opening, cv2.cv.CV_DIST_L2, 5)
11
lynvie

チュートリアルを完了する際に遭遇する次のバグはcv2.connectedComponents利用できません。 OpenCV for Python --AttributeError: 'module'オブジェクトには属性 'connectedComponents' を参照してください。

秘訣はopencv3をインストールすることです。これは、 Anaconda を使用して簡単に実行できます。

conda install -c https://conda.binstar.org/menpo opencv3
3
Bob Baxley

cv2.cv.CV_DIST_L2は代替として機能します

0
Rutuja Jadhav