代码拉取完成,页面将自动刷新
同步操作将从 yizhaoyanbo/myKmeans 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#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);
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。