2015-04-14 3 views
0

Есть ли хороший способ доступа к конкретным регионам, помеченным cv :: connectedComponents? Например, я идентифицировал три области белых областей в двоичном изображении, и они помечены как 1, 2, 3. Как выполнять вычисления (например, дисперсия в одном направлении) только в области с меткой 2?Доступ к помеченной области из cv :: connectedComponents

ответ

2

Вы должны использовать cv :: connectedComponentsWithStats. Затем вы можете прокручивать каждую метку и использовать CC_STAT_LEFT, CC_STAT_TOP, CC_STAT_WIDTH и CC_STAT_HEIGHT, чтобы получить ограничительную рамку для каждого региона. Более подробная информация здесь: https://github.com/Itseez/opencv/blob/master/modules/imgproc/src/connectedcomponents.cpp

Извлеченная по ссылке:

for(int l = 0; l < (int) nlabels; ++l){ 
     int *row = (int *) &statsv.at<int>(l, 0); 
     row[CC_STAT_LEFT] = INT_MAX; 
     row[CC_STAT_TOP] = INT_MAX; 
     row[CC_STAT_WIDTH] = INT_MIN; 
     row[CC_STAT_HEIGHT] = INT_MIN; 
     row[CC_STAT_AREA] = 0; 
    } 
Смежные вопросы