如何计算阈值处理后检测到的形状数量

时间:2017-01-11 01:16:02

标签: java opencv image-processing opencv-contour

我使用java OpenCV对我的图像进行了颜色分割,并且阈值图像可以显示为图像1:

enter image description here

我想计算阈值图像中的白点数。我参与了findcontour()功能并尝试获取白点的计数。但是我失败了。请帮我。我的代码在这里。

Imgproc.findContours(destination, contours, hierarchy,
         Imgproc.RETR_EXTERNAL,Imgproc.CHAIN_APPROX_SIMPLE);
for(int j=0;j<contours.size();j++){
  sum=sum+contours.size();
}
System.out.println("Sum"+sum);

2 个答案:

答案 0 :(得分:0)

我应用了形态开启操作。

使用此代码:opening = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)

kernel是1x的5x5数组。

我得到了这个:

enter image description here

答案 1 :(得分:0)

杰鲁的回答对于这个案子是正确的。如果你有一个更大噪音的情况,其中morpholigocal操作不会将它们拿出来,你可以用轮廓尺寸制作一个截止值,例如

int main(void){
    int i, j;
    float T1[4]={1.1, 1.2, 1.3, 1.4};
    float T2[6]={2.1, 2.2, 2.3, 2.4, 2.5, 2.6};
    float T3[3]={3.1, 3.2, 3.3};
    float T4[2]={4.1, 4.2};
    float T5[4]={5.1, 5.2, 5.3, 5.4};

    float *TAB[5]={T1, T2, T3, T4, T5};
    for(i=0; i<5; i++){
        for(j=0; j<sizeof(TAB[i])/(sizeof (int)); j++){
            printf("%f ", *(TAB[i]+j));
        }
    }
    printf("\n");
}

在计算之前