如何在使用 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);
}
请注意,您可能需要做更多的工作来合成文件名。
我是 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);
}
请注意,您可能需要做更多的工作来合成文件名。