2017-11-16 2 views
0

크기별로 분리 할 수 ​​있도록이 이미지에서 각각의 개별 객체 크기를 가져 오려고합니다. 내 목표는 루프를 통해 크기별로 구분할 수있게하는 것입니다. 나는 어디에서나 보았고 아무 데서도 실제로 찾을 수 없습니다. 연결된 구성 요소 분석을 시도했지만 크기 값을 검색하는 방법이 확실하지 않습니다.이미지에서 각 흰색 객체의 크기 가져 오기 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 방향 연결 픽셀은 가장자리 중 하나에 닿는 모든 픽셀에 이웃합니다. 8 방향 연결 픽셀은 가장자리 또는 모서리 중 하나에 닿는 모든 픽셀에 이웃합니다. 도움이 될 것입니다 : http://aishack.in/tutorials/pixel-neighbourhoods-connectedness/ – Rayees

관련 문제