2017-11-16 11 views
0

私はサイズ別に分けることができるように、このイメージの各オブジェクトのサイズを取得しようとしています。私の目的は、それらをループしてサイズ別に分けることです。私はどこにでも見てきたので、実際には何も見つけられません。私は接続コンポーネント分析を試みたが、私はそれからサイズの値を取得する方法がわからない。イメージ内の各白いオブジェクトのサイズを取得するpython opencv

_, lab = cv2.connectedComponents(img) 

picture

答えて

2

使用connectedComponentsWithStats.

# Choose 4 or 8 for connectivity type 
connectivity = 4 
output = cv2.connectedComponentsWithStats(img, connectivity, cv2.CV_32S) 

num_labels = output[0] 
stats = output[2] 

for label in range(1,num_labels): 
    blob_area = stats[label, cv2.CC_STAT_AREA] 
    blob_width = stats[label, cv2.CC_STAT_WIDTH] 
    blob_height = stats[label, cv2.CC_STAT_HEIGHT] 

num_labelsは、ラベルの総数を与えます。 stats行列を使用して、各ラベルを繰り返して各blobのサイズを取得することができます。

+0

あなたよりも、4または8の接続性の違いは何ですか? – mDumple

+1

@mdumple 4方向に接続されたピクセルは、エッジの1つに接触するすべてのピクセルに隣接しています。 8方向に接続されたピクセルは、そのエッジまたはコーナーの1つに接触するすべてのピクセルに隣接しています。 これは役に立ちます:http://aishack.in/tutorials/pixel-neighbourhoods-connectedness/ – Rayees

関連する問題