1 Star 0 Fork 1

Cheney/myKmeans

forked from yizhaoyanbo/myKmeans 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
main.cpp 1.50 KB
一键复制 编辑 原始数据 按行查看 历史
yizhaoyanbo 提交于 2018-05-06 00:24 . fix sample data bug
#include <opencv2\opencv.hpp>
#include <iostream>
#include <string>
#include "kmeansMethon.h"
using namespace std;
cv::Scalar colorTab[] = //10个颜色
{
cv::Scalar(255, 0, 0),
cv::Scalar(0, 255, 0),
cv::Scalar(0, 0, 255),
cv::Scalar(255, 100, 100),
cv::Scalar(255, 0, 255),
cv::Scalar(0, 255, 255),
cv::Scalar(255, 255, 0),
cv::Scalar(255, 0, 100),
cv::Scalar(100, 100, 100),
cv::Scalar(50, 125, 125)
};
void main()
{
cv::Mat lenaImg = cv::imread("data/lena.jpg");
int imgHeight = lenaImg.rows;
int imgWidth = lenaImg.cols;
int channel = lenaImg.channels();
int imgSize = imgHeight*imgWidth;
//整理输入数据
cv::Mat input = cv::Mat::zeros(imgSize, 1, CV_32FC3);
cv::Mat labelImg=cv::Mat::zeros(imgSize, 1, CV_32SC1);
labelImg.setTo(-1);
uchar *pLena = (uchar*)lenaImg.data;
float *pInput = (float*)input.data;
for (int i = 0; i < imgHeight; i++)
{
for (int j = 0; j < imgWidth; j++)
{
int idx = (i*imgWidth + j)*channel;
pInput[idx] = (float)pLena[idx];
pInput[idx + 1] = (float)pLena[idx + 1];
pInput[idx + 2] = (float)pLena[idx + 2];
}
}
kmeansMethon kmeansCluster;
kmeansCluster.run(input, labelImg, 10, 1);
cv::Mat showColor = lenaImg.clone();
for (int i = 0; i < lenaImg.rows; i++)
{
for (int j = 0; j < lenaImg.cols; j++)
{
//标记像素点的类别,颜色区分
cv::circle(showColor, cv::Point(j, i), 1, colorTab[labelImg.at<int>(i*lenaImg.cols + j)]);
}
}
cv::imshow("color", showColor);
cv::waitKey(0);
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/ChanHao/myKmeans.git
git@gitee.com:ChanHao/myKmeans.git
ChanHao
myKmeans
myKmeans
master

搜索帮助

0d507c66 1850385 C8b1a773 1850385