opencv kmeans 算法例子
来源:互联网 发布:手机快速下载软件 编辑:程序博客网 时间:2024/05/22 10:31
kmeans算法主要用来实现自动聚类,是一种非监督的机器学习算法,使用非常广泛。在opencv3.0中提供了这样一个函数,直接调用就能实现自动聚类,非常方便。
函数原型:
C++: double kmeans(InputArray data, int K, InputOutputArray bestLabels, TermCriteria criteria, int attempts, int flags, OutputArray centers=noArray() )
有7个参数,分别表示:
data: 需要自动聚类的数据,一般是一个Mat。浮点型的矩阵,每行为一个样本。
k: 取成几类,比较关键的一个参数。
bestLabels: 返回的类别标记,整型数字。
criteria: 算法结束的标准,获取期望精度的迭代最大次数
attempts: 判断某个样本为某个类的最少聚类次数,比如值为3时,则某个样本聚类3次都为同一个类,则确定下来。
flags: 确定簇心的计算方式。有三个值可选:KMEANS_RANDOM_CENTERS 表示随机初始化簇心。KMEANS_PP_CENTERS 表示用kmeans++算法来初始化簇心(没用过),KMEANS_USE_INITIAL_LABELS 表示第一次聚类时用用户给定的值初始化聚类,后面几次的聚类,则自动确定簇心。
centers: 用来初始化簇心的。与前一个flags参数的选择有关。如果选择KMEANS_RANDOM_CENTERS随机初始化簇心,则这个参数可省略。
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/ml/ml.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main()
{
const int MAX_CLUSTERS = 5;
Vec3b colorTab[] =
{
Vec3b(0, 0, 255),
Vec3b(0, 255, 0),
Vec3b(255, 100, 100),
Vec3b(255, 0, 255),
Vec3b(0, 255, 255)
};
Mat data,labels;
//Mat pic = imread("e:\\ocr\\1.bmp");
Mat pic = imread("D:\\SVMstudy\\1.bmp");
for (int i = 0; i < pic.rows;i++)
for (int j = 0; j < pic.cols; j++)
{
Vec3b point = pic.at<Vec3b>(i, j);
Mat tmp = (Mat_<float>(1, 3) << point[0], point[1], point[2]);
data.push_back(tmp);
}
//根据浏览图片,确定k=3
kmeans(data, 3, labels, TermCriteria(TermCriteria::EPS + TermCriteria::COUNT, 10, 1.0),
3, KMEANS_RANDOM_CENTERS);
int n = 0;
//显示聚类结果,不同的类别用不同的颜色显示
for (int i = 0; i < pic.rows; i++)
for (int j = 0; j < pic.cols; j++)
{
int clusterIdx = labels.at<int>(n);
pic.at<Vec3b>(i, j) = colorTab[clusterIdx];
n++;
}
imshow("pic", pic);
waitKey(0);
return 0;
}
- opencv kmeans 算法例子
- OpenCV+KMeans算法
- Opencv Kmeans聚类算法
- OpenCv Kmeans算法及实现
- Opencv之Kmeans算法实现
- Opencv Kmeans聚类算法
- kmeans算法原理及opencv中的实现
- opencv之kmeans聚类算法
- OpenCV中KMeans算法介绍与应用
- 【opencv】kmeans
- opencv kmeans
- 【opencv】OpenCV中的KMeans算法介绍与应用(二)
- 【OpenCV】中的KMeans算法介绍与应用(一)
- KMeans 算法
- Kmeans算法
- kmeans算法
- Kmeans算法
- Kmeans算法
- bzoj 1573 [Usaco2009 Open]牛绣花cowemb 计算几何 树状数组
- html表格导出Excel
- Spark算子:RDD基本转换操作(5)–mapPartitions/mapPartitionsWithIndex
- 格式: echo -e "\033[字背景颜色;字体颜色m字符串\033[0m"
- PL/SQL中显示行号
- opencv kmeans 算法例子
- 使用typedef语句定义数组类型
- Unity3D动态加载资源的2种方式
- python爬虫笔记 --------scrapy框架(3)
- 将毫秒转成时:分:秒
- CentOS 7.2 安装Subversion(SVN)
- ascii,ISO-8859-1,unicode, utf8,gb2312,big5,gbk,gb18030等几种常区别
- TCP与UDP在socket编程中的区别
- mysql load data infile