c++ opencv连通量绘色
时间: 2024-01-10 13:21:47 浏览: 75
在C++的OpenCV中,可以使用连通组件标记函数connectedComponentsWithStats()来获取图像中的连通组件信息,并使用不同的颜色绘制出每个连通组件。
下面是一个示例代码,演示了如何使用连通组件标记函数和绘制函数来实现连通组件绘色:
```cpp
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
// 读取图像
Mat image = imread("input.jpg", IMREAD_GRAYSCALE);
// 进行连通组件标记
Mat labels, stats, centroids;
int num_labels = connectedComponentsWithStats(image, labels, stats, centroids);
// 创建一个彩色图像,用于绘制连通组件
Mat colored_image;
cvtColor(image, colored_image, COLOR_GRAY2BGR);
// 随机生成颜色
RNG rng(0);
vector<Vec3b> colors(num_labels);
for (int i = 0; i < num_labels; i++)
{
colors[i] = Vec3b(rng.uniform(0, 256), rng.uniform(0, 256), rng.uniform(0, 256));
}
// 绘制连通组件
for (int y = 0; y < image.rows; y++)
{
for (int x = 0; x < image.cols; x++)
{
int label = labels.at<int>(y, x);
if (label > 0)
{
colored_image.at<Vec3b>(y, x) = colors[label];
}
}
}
// 显示结果图像
imshow("Connected Components", colored_image);
waitKey(0);
return 0;
}
```
这段代码首先读取了一张灰度图像,然后使用connectedComponentsWithStats()函数进行连通组件标记,得到每个连通组件的标签。接下来,创建一个彩色图像,用于绘制连通组件。然后,随机生成颜色,并根据每个像素的标签将对应的颜色绘制到彩色图像上。最后,显示结果图像。
阅读全文