オープンなCVでPythonでコンポーネントのラベル付けを実装する方法は? this is an image example は、私は、Pythonを言及していない黒と白の画像Pythonでコンポーネントラベルを貼り付けた
0
A
答えて
2
OpenCVのconnectedComponents()
docs上のオブジェクトを分離するために、連結成分のラベル付けを必要とするが、それは実際に実装されています。たとえばを参照してください。 this SO question。
関数呼び出しは単純です:retval, labels = cv2.connectedComponents(img)
パラメータconnectivity
を指定して、4方向または8方向(デフォルト)の接続性を確認できます。違いは、4方向接続では、上下左右のピクセルをチェックし、接続しているかどうかを確認するだけです。隣接する8つのピクセルのいずれかが接続されている場合、8方向のチェック。対角線接続の場合(ここで行うように)、connectivity=8
を指定する必要があります。各コンポーネントには番号が付けられ、0から始まる整数ラベルが増えます。すべてのゼロが接続され、すべてが接続されます。視覚化したい場合は、その番号を特定の色にマップできます。私はそれらを異なる色合いにマッピングし、それらをHSV画像に結合してからBGRに変換して表示するのが好きです。ここにあなたのイメージを持つ例を示します
import cv2
import numpy as np
img = cv2.imread('eGaIy.jpg', 0)
img = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)[1] # ensure binary
ret, labels = cv2.connectedComponents(img)
# Map component labels to hue val
label_hue = np.uint8(179*labels/np.max(labels))
blank_ch = 255*np.ones_like(label_hue)
labeled_img = cv2.merge([label_hue, blank_ch, blank_ch])
# cvt to BGR for display
labeled_img = cv2.cvtColor(labeled_img, cv2.COLOR_HSV2BGR)
# set bg label to black
labeled_img[label_hue==0] = 0
cv2.imshow('labeled.png', labeled_img)
cv2.waitKey()
関連する問題
- 1. 貼り付け値
- 2. Visual Studioコードの貼り付けと貼り付けのコピー
- 3. Pythonでカンマで列をExcelに貼り付け
- 4. 数値を貼り付けて数値を貼り付けます
- 5. シンプルなコードに貼り付けた
- 6. エラー/下に貼り付けたスクリプト
- 7. コアテキストとiOS上に貼り付けた
- 8. VIM:貼り付けられたブロック
- 9. CIJoeが「建物」に貼り付けた
- 10. 修正貼り付けたテキスト
- 11. Scollspyとブートストラップに貼り付けた
- 12. Pythonで2枚の絵を貼り付ける
- 13. Python win32 Excelの貼り付けグラフをビットマップ(PasteSpecial)ですか?
- 14. special inをpythonで貼り付けるには
- 15. GWTのイベント貼り付け
- 16. コピーコピー貼り付けjQuery/Javascript
- 17. コピー貼り付けマクロ
- 18. jQueryファンシーボックススピニングローダーに貼り付け
- 19. (例:コピー、貼り付け...)
- 20. アドバンスフィルタから貼り付け
- 21. 貼り付けVBA配列
- 22. コンソールにxml貼り付け
- 23. pygame.draw.rect()に貼り付け
- 24. VBAコピー貼り付け
- 25. テキストのコピー/貼り付け
- 26. コピー貼り付けfrom userform
- 27. jquery貼り付けディスプレイ:ブロック
- 28. 貼り付けデータUP
- 29. 貼り付け方法は
- 30. Javascript - 貼り付けイベントの前に貼り付けデータを取得する
おかげアレクサンダーは、私はすでにcv2.connectedComponentsを使用するには、しかし、私はこのようなERORを、見つけ はAttributeError: 'モジュール' オブジェクトが持っている何の属性 'connectedComponentsない' –
ああ、あなたはOpenCVの旧バージョンで、バインディングがまだ移植されていない可能性が高いです。 OpenCVのどのバージョンを使用していますか?アップグレードできない場合は、 'scikit-image'のような別のライブラリを検討してください。そのライブラリの[こちらの例](http://www.scipy-lectures.org/packages/scikit-image/auto_examples/plot_labels.html)あるいは、輪郭を検出してその画像にラベルを付けることができます。 –
私のopencvのバージョン '2.4.13'。 ありがとう、非常に役立つ、私は私のopencvがアップグレードが必要と思う –