OpenCV Edit Diff Refresh Backlink Random Search History Help Setting Hide Show 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 이 글에는 0 개의 댓글이 있습니다. Please enable JavaScript to view the comments powered by Disqus. comments powered by Disqus