OpenCV Python kmeans 예제OpenCV/OpenCV 강좌2024. 4. 10. 07:35
Table of Contents
반응형
k-means 클러스터링 알고리즘을 구현한 kmeans 함수 예제입니다.
2024. 4. 10 최초시간
kmeans 함수는 k-means 클러스터링 알고리즘을 구현한 것으로, 주어진 데이터를 k개의 클러스터로 그룹화하는 데 사용됩니다. 이 함수는 데이터 포인트 사이의 유클리드 거리를 기반으로 각 데이터 포인트를 가장 가까운 클러스터 중심에 할당합니다. 클러스터의 수 k는 사용자가 지정해야 하며, 알고리즘은 클러스터의 중심을 반복적으로 업데이트하면서 데이터 포인트를 그룹화합니다.
import cv2 import numpy as np def cluster_colors(img, k): h, w, _ = img.shape # 이미지를 (픽셀 수, 채널 수) 형태로 변환합니다. img_flatten = img.reshape((-1, 3)) # 데이터 타입을 np.float32로 변환합니다. img_flatten = np.float32(img_flatten) # k-평균 알고리즘의 종료 기준을 정의한다 (반복 횟수와 원하는 정밀도) criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 100, 0.2) # k-평균 알고리즘을 실행한다 _, labels, centers = cv2.kmeans(img_flatten, k, None, criteria, 10, cv2.KMEANS_RANDOM_CENTERS) # 클러스터의 중심 값을 uint8 타입으로 변환한다 centers = np.uint8(centers) # 각 픽셀을 해당하는 중심 색상으로 대체한다 clustered_img = centers[labels.flatten()] # 이미지의 크기를 원본으로 복원한다 clustered_img = clustered_img.reshape((h, w, 3)) return clustered_img img = cv2.imread('test.jpg') clustered_img = cluster_colors(img, k=4) img_result = cv2.hconcat([img, clustered_img]) cv2.imshow('Clustered Image', img_result) cv2.waitKey(0) cv2.destroyAllWindows() |
실행결과입니다. 왼쪽 이미지를 k값으로 지정한 4가지 색으로 표현하고 있습니다.
반응형
'OpenCV > OpenCV 강좌' 카테고리의 다른 글
OpenCV Python 검은색 빈 공간 채우기 (0) | 2024.04.19 |
---|---|
Matplotlib의 컬러맵을 화면에 출력하는 OpenCV 예제 (0) | 2024.04.18 |
OpenCV Python inpaint 함수 : 손상된 이미지 복원(Image Inpainting) (0) | 2024.04.04 |
OpenCV Python 강좌 - 동영상의 배경 제거하고 움직이는 물체 검출 하기 ( Background Subtraction ) (23) | 2023.12.10 |
OpenCV 빌드 후 ModuleNotFoundError: No module named 'cv2' 에러 해결 (0) | 2023.10.28 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
@webnautes :: 멈춤보단 천천히라도
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!