如何在使用 OpenCV C++ 应用 K 均值后将分割提取为图像?

How to extract segmentation as images after applying K Means using OpenCV C++?

我是 OpenCV 的新手。

我的图像由随机分布的红色、绿色和蓝色像素组成。我应用了 K 均值并希望将聚类保存为不同的图像。假设如果我认为聚类的数量为 3,我想要通过 K 均值进行分割来保存三张图像。

我使用的语言是C++。如果对 EMGUCV 有任何建议,也会有所帮助。

感谢您的回复! 欢迎提出任何建议!

bestLabels argument to kmeans(您称之为 'Labels')允许您指定一个 cv::Mat,该方法将在其中存储所有输入像素的标签索引。它与输入图像具有相同的几何形状。

将输出拆分为掩码非常简单。然后可以将掩码保存为文件。示例代码(未测试):

for (auto k = 0; k < K; ++k) {
    cv::Mat1b mask = (bestLabels == k);
    cv::imwrite("cluster_" + std::to_string(k) + ".png", mask);
}

请注意,您可能需要做更多的工作来合成文件名。