Pythonでcv2.distanceTransform()
メソッドを使用しようとしています。また、次のコード行を実行するとエラーが発生します。
dist_transform = cv2.distanceTransform(opening,cv2.DIST_L2,5)
このコードを実行すると、次のエラーが発生します。
AttributeError: 'モジュール'オブジェクトに属性 'DIST_L2'がありません
同様の質問が以前に行われたことがあり、pythonファイル名が 'something.py'の場合に 'something'をインポートすると、この問題が発生することを知っています。ただし、my pythonファイル名はsegment3.pyです。
誰かがこれを手伝ってくれませんか?流域アルゴリズムを使用してセグメンテーションを実行しようとしています。私はFedora20に取り組んでいます。前もって感謝します!
以下のように書き直す必要があります。
(dist_transform, labels) = cv2.distanceTransform(opening,cv2.cv.CV_DIST_L2,5)
の代わりに cv2.DIST_L2
、 使用する:
cv2.cv.CV_DIST_L2
私は同じ問題を抱えていましたが、いくつかの調査の後、 documentation は、代わりにこの定数を使用するソースコード(opencv_source/samples/python2/distrans.py)のサンプルファイルに言及しています。ここでテストしたところ、期待どおりに機能しました。
これは返信が遅れていますが、実行しているチュートリアルを完了するには、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)
チュートリアルを完了する際に遭遇する次のバグはcv2.connectedComponents
利用できません。 OpenCV for Python --AttributeError: 'module'オブジェクトには属性 'connectedComponents' を参照してください。
秘訣はopencv3をインストールすることです。これは、 Anaconda を使用して簡単に実行できます。
conda install -c https://conda.binstar.org/menpo opencv3
cv2.cv.CV_DIST_L2は代替として機能します