从cv :: connectedComponents访问标记区域

时间:2015-04-14 16:03:04

标签: c++ opencv image-processing image-recognition

是否有一种访问cv :: connectedComponents标记的特定区域的好方法?例如,我已经在二进制图像中识别出三个区域的白色区域,并且它们被标记为1,2,3。如何仅在标记为2的区域上进行计算(例如,在一个方向上的方差)?

1 个答案:

答案 0 :(得分: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;
    }