二值图像中不同区域的数量 (c++)
number of distinct regions in the binary image (c++)
我将 b/w 图片分成 4 段。我需要知道 每个段有多少 个区域。
这是一个更好解释的例子。
我想知道 在任何最流行的 c++ 图像处理库中是否有现成的 API 可用? (比如 gd、cimg、opencv?)
您可以只使用 OpenCV 的 connectedComponents()
并且您寻求的答案比它 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.
我将 b/w 图片分成 4 段。我需要知道 每个段有多少 个区域。
这是一个更好解释的例子。
我想知道 在任何最流行的 c++ 图像处理库中是否有现成的 API 可用? (比如 gd、cimg、opencv?)
您可以只使用 OpenCV 的 connectedComponents()
并且您寻求的答案比它 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.