OpenCV3.2图像分割 实例2:KMeans对随机生成数据进行分类


1 #include <opencv2/opencv.hpp> 2 #include <iostream> 3 4 using namespace cv; 5 using namespace std; 6 7 int main(int argc, char** argv) ; 18 19 int numCluster = rng.uniform(2, 5);//定义分类种类数量块 20 printf("number of clusters : %d\n", numCluster); 21 //设置从原图像中抽取多少个数据点 22 int sampleCount = rng.uniform(5, 1000); 23 Mat points(sampleCount, 1, CV_32FC2); 24 Mat labels; 25 Mat centers; 26 27 // 生成随机数 28 for (int k = 0; k < numCluster; k++) 38 randShuffle(points, 1, &rng); 39 40 // 使用KMeans 41 kmeans(points, numCluster, labels, TermCriteria(TermCriteria::EPS + TermCriteria::COUNT, 10, 0.1), 3, KMEANS_PP_CENTERS, centers); 42 43 // 用不同颜色显示分类 44 img = Scalar::all(255); 45 for (int i = 0; i < sampleCount; i++) 50 51 // 每个聚类的中心来绘制圆 52 for (int i = 0; i < centers.rows; i++) 58 59 imshow("KMeansDataDemo", img); 60 waitKey(0); 61 return 0; 62 }

可见,随机生成的数据被分成了四块,每块的中心坐标如下:



上一篇:ITK 实例8 PNG图像进行不带滤波的二维导函数提取

下一篇:ITK 实例10 边缘保留平滑滤波对PNG图像进行二维滤波


OpenCV
Copyright © 2002-2019 k262电脑网 www.k262.cn 皖ICP备2020016292号
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!QQ:251442993 热门搜索 网站地图