K均值算法
来源:互联网 发布:淘宝宝贝描述用什么做 编辑:程序博客网 时间:2024/05/21 21:37
1. K均值算法流程图
2. 模拟效果图
3. Learning Opencv的源码
#include <stdio.h>#include <stdlib.h>#include <ctype.h>#include "opencv2/opencv.hpp"#include <iostream>#include <opencv/cv.h>#include <opencv/cvaux.h>#include <opencv/cxcore.h>#include <opencv/highgui.h>int main( int argc, char** argv ){//类别个数的上界 #define MAX_CLUSTERS 5 CvScalar color_tab[MAX_CLUSTERS]; IplImage* img = cvCreateImage( cvSize( 500, 500 ), 8, 3 ); CvRNG rng = cvRNG(0xffffffff); color_tab[0] = CV_RGB(255,0,0); color_tab[1] = CV_RGB(0,255,0); color_tab[2] = CV_RGB(100,100,255); color_tab[3] = CV_RGB(255,0,255); color_tab[4] = CV_RGB(255,255,0); cvNamedWindow( "clusters", 1 ); for(;;) { //产生随机数 int k, cluster_count = cvRandInt(&rng)%MAX_CLUSTERS + 1; int i, sample_count = cvRandInt(&rng)%1000 + 1; CvMat* points = cvCreateMat( sample_count, 1, CV_32FC2 ); CvMat* clusters = cvCreateMat( sample_count, 1, CV_32SC1 ); /* generate random sample from multivariate Gaussian distribution */ for( k = 0; k < cluster_count; k++ ) { CvPoint center; CvMat point_chunk; center.x = cvRandInt(&rng)%img->width; center.y = cvRandInt(&rng)%img->height; /* Selects row span of the input array: arr(start_row:delta_row:end_row,:) (end_row is not included into the span). */ //CVAPI(CvMat*) cvGetRows( const CvArr* arr, CvMat* submat, // int start_row, int end_row, // int delta_row CV_DEFAULT(1)); //得到某一行的值 cvGetRows( points, &point_chunk, k*sample_count/cluster_count, k == cluster_count - 1 ? sample_count : (k+1)*sample_count/cluster_count ); cvRandArr( &rng, &point_chunk, CV_RAND_NORMAL, cvScalar(center.x,center.y,0,0), cvScalar(img->width/6, img->height/6,0,0) ); } /* shuffle samples */ for( i = 0; i < sample_count/2; i++ ) { CvPoint2D32f* pt1 = (CvPoint2D32f*)points->data.fl + cvRandInt(&rng)%sample_count; CvPoint2D32f* pt2 = (CvPoint2D32f*)points->data.fl + cvRandInt(&rng)%sample_count; CvPoint2D32f temp; CV_SWAP( *pt1, *pt2, temp ); } cvKMeans2( points, cluster_count, clusters, cvTermCriteria( CV_TERMCRIT_EPS+CV_TERMCRIT_ITER, 10, 1.0 )); cvZero( img ); for( i = 0; i < sample_count; i++ ) { CvPoint2D32f pt = ((CvPoint2D32f*)points->data.fl)[i]; int cluster_idx = clusters->data.i[i]; cvCircle( img, cvPointFrom32f(pt), 2, color_tab[cluster_idx], CV_FILLED ); } cvReleaseMat( &points ); cvReleaseMat( &clusters ); cvShowImage( "clusters", img ); int key = cvWaitKey(0); if( key == 27 ) // 'ESC' break; }}
0 0
- K-均值算法
- K均值算法
- K-均值算法
- K均值算法
- K-均值算法简介
- 6、K均值算法
- 关于k-均值算法
- K-均值算法
- K-均值算法
- 二分k-均值算法
- K-均值算法
- K 均值算法
- 聚类-k均值算法
- K-均值算法
- opencv K均值算法
- K均值算法
- K-Means(K均值) 算法
- K均值的算法步骤
- J2EE概念综述
- python numpy,matplotlib,setuptools windows环境下的安装
- poj1321 棋盘问题(状态压缩)
- 常见HTTP状态码整理
- Oracle特殊字符转义:&和'
- K均值算法
- html5桌面通知(Web Notifications)实例解析
- C语言之逗号运算符、自动转换和强制转换
- 每日一句【2015-01-17】
- 客户端开发注意事项
- gcc生成静态库和动态库
- hdu1269——迷宫城堡——————【kosaraju模板】
- 嵌入式软件开发学习流程
- vs2010下debug模式下不能执行断点解决方法