opencv 连通性分析C++代码
时间: 2023-10-05 20:12:45 浏览: 118
以下是使用 OpenCV 进行连通性分析的 C++ 代码示例:
```cpp
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
Mat src = imread("test.jpg", IMREAD_GRAYSCALE);
if (src.empty()) {
cerr << "Failed to open image file." << endl;
return -1;
}
// 进行连通性分析
Mat labels, stats, centroids;
int num_objects = connectedComponentsWithStats(src, labels, stats, centroids);
// 输出连通区域数目
cout << "Number of objects: " << num_objects - 1 << endl;
// 绘制连通区域外接矩形
for (int i = 1; i < num_objects; i++) {
int x = stats.at<int>(i, CC_STAT_LEFT);
int y = stats.at<int>(i, CC_STAT_TOP);
int w = stats.at<int>(i, CC_STAT_WIDTH);
int h = stats.at<int>(i, CC_STAT_HEIGHT);
rectangle(src, Rect(x, y, w, h), Scalar(0, 255, 0), 2);
}
imshow("Connected Components", src);
waitKey();
return 0;
}
```
在这个示例中,我们首先读取了一张灰度图像,然后调用了 `connectedComponentsWithStats` 函数进行连通性分析。在得到连通区域标签图像之后,我们输出了连通区域数目,并使用 `CC_STAT_LEFT`、`CC_STAT_TOP`、`CC_STAT_WIDTH` 和 `CC_STAT_HEIGHT` 等参数取得了每个连通区域的统计信息,然后绘制了连通区域外接矩形,并将结果显示出来。
阅读全文