[python] 파이썬으로 이미지 색깔 추출하기

파이썬으로 이미지 색상 추출하기

이미지 처리 및 컴퓨터 비전 프로젝트를 수행하는 경우 이미지에서 주요한 색상을 추출하는 것은 매우 중요합니다. 파이썬을 사용하여 이미지에서 색상을 추출하는 방법에 대해 알아보겠습니다.

Pillow 라이브러리 사용

이미지 처리를 위해 Pillow 라이브러리가 흔히 사용됩니다. Pillow는 이미지 조작을 위한 파이썬 라이브러리로, 이미지를 로드하고 색상을 추출하는 기능을 제공합니다.

from PIL import Image

image_path = "image.jpg"
image = Image.open(image_path)

# 이미지에서 색상 추출
colors = image.getcolors()

print(colors)

위의 예제에서 getcolors 함수를 사용하여 이미지에서 일반적인 색상들을 추출할 수 있습니다.

OpenCV 라이브러리 사용

OpenCV는 컴퓨터 비전 및 이미지 처리를 위한 가장 인기 있는 라이브러리 중 하나입니다. 이미지의 색상을 추출하고 처리하는 데에도 OpenCV를 사용할 수 있습니다.

import cv2

image_path = "image.jpg"
image = cv2.imread(image_path)

# BGR에서 RGB로 색상 변환
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

# 이미지에서 색상 추출
colors = image.reshape(-1, image.shape[-1]).mean(axis=0)

print(colors)

위의 예제에서는 OpenCV를 사용하여 이미지에서 평균 색상을 추출하는 방법을 보여줍니다.

K-Means 클러스터링을 사용한 색상 분할

K-Means 클러스터링을 사용하면 이미지에서 주요한 색상을 클러스터링하고 분할할 수 있습니다.

import numpy as np
from sklearn.cluster import KMeans

image_path = "image.jpg"
image = cv2.imread(image_path)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

# 이미지 reshape
pixel_values = image.reshape(-1, 3)

# K-Means 클러스터링
kmeans = KMeans(n_clusters=5, random_state=42)
kmeans.fit(pixel_values)

# 클러스터 중심 값
colors = kmeans.cluster_centers_

print(colors)

위의 코드는 K-Means 클러스터링을 사용하여 이미지에서 5가지 색상을 추출하고 각 색상의 RGB 값의 centroid를 출력합니다.

이제 여러 방법을 사용하여 이미지에서 색상을 추출하는 방법에 대해 알아보았습니다. 위의 방법들을 사용하여 프로젝트에 맞는 적절한 방법을 선택할 수 있을 것입니다.

이 글은 이미지 처리와 컴퓨터 비전에 대한 기본적인 이해가 있다는 가정하에 작성되었습니다. 자세한 내용은 Pillow, OpenCV, KMeans 클러스터링 등에 대해 추가적으로 학습하시기를 권장합니다.

참고: