小编jav*_*jsa的帖子

OpenCV 3.0已连接组件,无法使其正常工作

我有以下代码,它只是一个简单的测试程序,用于学习如何在openCV 3.0中使用连接组件功能

int main(int argc, char** argv) {

char* line = argv[1];

Mat image;

image = imread(line,CV_LOAD_IMAGE_GRAYSCALE);   

cv::Mat label=Mat(image.size(),CV_16U);

int la=connectedComponents(image,label, 8,CV_16U);

    //tried also: label.convertTo(label,CV_8U,255);   
   // and label.convertTo(label,CV_16U,255);

namedWindow( "input", CV_WINDOW_AUTOSIZE );
imshow( "input", image);

    namedWindow( "ouput", CV_WINDOW_AUTOSIZE );
    imshow("output", label);
    cout<<la<<"\n";

    imwrite("output.png", label);
    waitKey(0);
    return 0;
    }
Run Code Online (Sandbox Code Playgroud)

输入图像是在白色背景上具有两个红色正方形的彩色图像.图像被正确加载并显示为灰度图像. 程序outoput

无论我做什么,输出总是一个空白图像,黑色或白色,取决于convertTo参数.

但是,返回的值connectedComponents是2.

我尝试了Miki提出的完整代码,我得到了这个:

在此输入图像描述

我认为问题可能是连接的组件无法正常工作.

尝试了我在桌面上的图片,最后得到了一些东西:

在此输入图像描述

然而,这次源图像是人,建筑物,汽车的常规图像......并且大部分输出仍然是空白的.有人知道为什么吗?

添加后 image = image < 200;

在此输入图像描述

使用时applyColorMap(seeMyLabels, seeMyLabels, COLORMAP_JET);,标签图像从几乎黑色的灰度变为蓝色

在此输入图像描述

c++ opencv connected-components

3
推荐指数
1
解决办法
4824
查看次数

标签 统计

c++ ×1

connected-components ×1

opencv ×1