二值图像中不同区域的数量 (c++)

number of distinct regions in the binary image (c++)

我将 b/w 图片分成 4 段。我需要知道 每个段有多少 个区域。

这是一个更好解释的例子。

我想知道 在任何最流行的 c++ 图像处理库中是否有现成的 API 可用? (比如 gd、cimg、opencv?)

您可以只使用 OpenCVconnectedComponents() 并且您寻求的答案比它 returns:

的数字少一
#include <opencv2/opencv.hpp>
using namespace cv;

int main(int argc, char** argv)
{
    if(argc!=2){
      std::cerr << "ERROR: Please supply an image name" << std::endl;
      exit(1);
    }

    // Load up the image and check
    Mat image = imread(argv[1], IMREAD_GRAYSCALE);
    if(image.empty()){
      std::cerr << "ERROR: Unable to load image" << std::endl;
      exit(1);
    }

    // Calculate connected components
    Mat label;
    int n=connectedComponents(image,label,8,CV_16U);
    std::cout << "n=" << n << std::endl;
}

Returns 5.


Returns 4.


Returns 3.


Returns 3.