1 #include <opencv2/opencv.hpp>
2 #include <iostream>
3
4 using namespace cv;
5 using namespace cv::ml;
6 using namespace std;
7
8 int main(int argc, char** argv) ;
19
20 int numCluster = rng.uniform(2, 5);
21 printf("number of clusters : %d\n", numCluster);
22
23 int sampleCount = rng.uniform(5, 1000);
24 Mat points(sampleCount, 2, CV_32FC1);
25 Mat labels;
26
27 // 生成随机数
28 for (int k = 0; k < numCluster; k++)
37 randShuffle(points, 1, &rng);
38 Ptr<EM> em_model = EM::create();
39 em_model>setClustersNumber(numCluster);
40 em_model>setCovarianceMatrixType(EM::COV_MAT_SPHERICAL);//协方差矩阵
41 //训练次数设置为100
42 em_model>setTermCriteria(TermCriteria(TermCriteria::EPS + TermCriteria::COUNT, 100, 0.1));
43 em_model>trainEM(points, noArray(), labels, noArray());
44
45 // classify every image pixels
46 Mat sample(1, 2, CV_32FC1);
47 for (int row = 0; row < img.rows; row++)
55 }
56
57 // draw the clusters
58 for (int i = 0; i < sampleCount; i++)
62
imshow("GMMEM Demo", img);
64
65 waitKey(0);
66 return 0;
67 }
上一篇:ITK 实例3 OTSU算法对PNG图像进行单阈值二维分割
下一篇:ITK 实例12 置信连接对PNG向量图像进行二维分割
OpenCV









