Contents
1
.
k-means
이 코드들은
OpenCV
라이브러리를 사용하기 때문에 해당 라이브러리를 설치하고,
#include <opencv2/opencv.hpp>
를 추가해야 한다.
1
.
k-means
#
무작위로 100개의 점을 생성하여 k-means 군집화를 수행했다.
#include
#include
using namespace cv; using namespace std; int main(int argc, char** argv) { Mat samples = Mat::zeros(100, 2, CV_32F); // 무작위로 100개의 점 생성 RNG rng(0); for (int i = 0; i < samples.rows; i++) { samples.at
(i, 0) = rng.uniform(0.f, 1.f); samples.at
(i, 1) = rng.uniform(0.f, 1.f); } // k-means 군집화 수행 int num_clusters = 5; Mat labels, centers; TermCriteria criteria(TermCriteria::EPS + TermCriteria::COUNT, 10, 1.0); int attempts = 5; kmeans(samples, num_clusters, labels, criteria, attempts, KMEANS_PP_CENTERS, centers); // 군집화 결과 출력 Mat plot = Mat::zeros(512, 512, CV_8UC3); plot.setTo(Scalar(255, 255, 255)); for (int i = 0; i < samples.rows; i++) { int label = labels.at
(i); float x = samples.at
(i, 0) * plot.cols; float y = samples.at
(i, 1) * plot.rows; circle(plot, Point(x, y), 3, Scalar(0, 0, 255), FILLED, LINE_AA); } for (int i = 0; i < centers.rows; i++) { float x = centers.at
(i, 0) * plot.cols; float y = centers.at
(i, 1) * plot.rows; circle(plot, Point(x, y), 10, Scalar(0, 255, 0), FILLED, LINE_AA); } namedWindow("Clusters", WINDOW_NORMAL); imshow("Clusters", plot); waitKey(0); return 0; }
[PNG image (17.42 KB)]
Document
Retrieved from http://hyacinth.byus.net/moniwiki/wiki.php/OpenCV
last modified 2023-05-05 18:27:59