gpt4 book ai didi

opencv - 在 OpenCV 中使用 k-means 进行颜色分类

转载 作者:太空宇宙 更新时间:2023-11-03 20:56:08 25 4
gpt4 key购买 nike

我想使用 K-Means 算法对大量图像进行聚类。我想设置簇,以便每个簇代表图像的主色或色调。我在论文 Colour Image Clustering using K-Means 中读到了一些关于此的内容

有人有在 OpenCV 中执行此操作的想法吗?

也许我可以比较每张图片的直方图。但如果我有很多图片,则需要很长时间

最佳答案

您可以矢量化您的图像,使每一行都是一组 RGB,然后使用 cv::kmeans 进行聚类,例如:

    std::vector<cv::Mat> imgRGB;
cv::split(img,imgRGB);
int k=5;
int n = img.rows *img.cols;
cv::Mat img3xN(n,3,CV_8U);
for(int i=0;i!=3;++i)
imgRGB[i].reshape(1,n).copyTo(img3xN.col(i));
img3xN.convertTo(img3xN,CV_32F);
cv::Mat bestLables;
cv::kmeans(img3xN,k,bestLables,cv::TermCriteria(),10,cv::KMEANS_RANDOM_CENTERS );
bestLables= bestLables.reshape(0,img.rows);
cv::convertScaleAbs(bestLables,bestLables,int(255/k));
cv::imshow("result",bestLables);
cv::waitKey();

关于opencv - 在 OpenCV 中使用 k-means 进行颜色分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11411889/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com