Opencv 连通域分析

来源:互联网 发布:办公室软件视频 编辑:程序博客网 时间:2024/06/04 19:15

前面的博客有Opencv连通域分析 connectedComponents函数的用法示例
这里讲一个 connectedComponentsWithStats 函数的用法,这个函数能返回除了连通域图之外,还有一些统计信息。
用法:

Mat Imglabels, Imgstats, Imgcentriods;    int Imglabelnum = connectedComponentsWithStats(Imgbw, Imglabels, Imgstats, Imgcentriods);

其中Imgbw是一个二值图,输出Imglabels是一副depth 是CV_32F的标签图,不同的连通域被赋该连通域的标签的值。 Imgstats包含了一些信息,如果想知道标签为i的连通域的一些信息,可以如下访问

Imgstats.at<int>(i, CC_STAT_AREA) //连通域的面积double left = Imgstats.at<int>(i, CC_STAT_LEFT); //连通域的boundingbox的最左边double top = Imgstats.at<int>(i, CC_STAT_TOP);//连通域的boundingbox的最上边double width= Imgstats.at<int>(i, CC_STAT_WIDTH)  ;//连通域的宽double height Imgstats.at<int>(i, CC_STAT_HEIGHT) ;//连通域的高

另外,连通域的重心

Point2f pt;  //pt就是重心pt.x = Imgcentriods.at<double>(i, 0);pt.y = Imgcentriods.at<double>(i, 1);

连通域的个数
int labelNum =Imgcentriods.rows;

原创粉丝点击