파이썬에서 HSV 색상 모델 다루기
서론
HSV(색상(Hue), 채도(Saturation), 명도(Value))는 주로 컴퓨터 그래픽이나 이미지 처리에서 사용되는 색상 모델이다. 이 모델은 RGB(빨강, 녹색, 파랑)보다 직관적으로 색상을 나타내는 방법으로 널리 사용되며, 파이썬에서도 HSV 모델을 다루는 기능을 제공한다. 이번 포스팅에서는 파이썬에서 HSV 색상 모델을 다루는 방법을 알아보도록 하자.
본론
1. 색상(Hue)
색상(Hue)은 색상 원을 360도로 나타낸다. 파이썬에서는 matplotlib
라이브러리를 사용하여 HSV 색상을 표현할 수 있다. 예를 들어, 아래 코드는 색상 원 전체를 만들고 각도에 따라 다른 색상을 표현하는 예제이다.
“`python
import matplotlib.pyplot as plt
import numpy as np
h = np.linspace(0, 1, 360)
s = np.ones_like(h)
v = np.ones_like(h)
hsv = np.array([h, s, v]).T
rgb = plt.cm.hsv(hsv)
fig, ax = plt.subplots(figsize=(6, 6))
ax.imshow(rgb, origin=’lower’, extent=[0, 360, 0, 1])
ax.set_xlabel(‘Hue’)
ax.set_ylabel(‘Saturation’)
ax.set_title(‘Color Wheel’)
plt.show()
“`
2. 채도(Saturation)
채도(Saturation)은 색상의 강도를 나타내는 값이다. 파이썬에서는 colorsys
라이브러리를 사용하여 HSV 색상을 RGB로 변환할 수 있다. 아래는 색상을 바꾸는 예제이다.
“`python
import colorsys
h, s, v = 0.5, 0.5, 0.5
rgb = colorsys.hsv_to_rgb(h, s, v)
print(f”Hue: {h}”)
print(f”Saturation: {s}”)
print(f”Value: {v}”)
print(f”RGB: {rgb}”)
“`
3. 명도(Value)
명도(Value)는 색의 밝기를 나타내는 값이다. 파이썬에서는 PIL
라이브러리를 사용하여 이미지의 명도를 조정할 수 있다. 아래 코드는 이미지의 명도를 변경하는 예제이다.
“`python
import PIL.Image as Image
import numpy as np
image = Image.open(‘image.jpg’)
image_hsv = image.convert(‘HSV’)
image_hsv_arr = np.array(image_hsv)
명도 50% 감소
image_hsv_arr[:, :, 2] = image_hsv_arr[:, :, 2] * 0.5
image_hsv_new = Image.fromarray(image_hsv_arr, ‘HSV’)
image_rgb_new = image_hsv_new.convert(‘RGB’)
image_rgb_new.save(‘image_new.jpg’)
“`
결론
이상으로 파이썬에서 HSV 색상 모델을 다루는 방법에 대해 알아보았다. 색상, 채도, 명도를 다루는 다양한 기능들을 사용하여 다양한 이미지 처리 작업을 수행할 수 있다. HSV 색상 모델은 컴퓨터 그래픽이나 이미지 처리 분야에서 매우 중요한 개념이므로, 이를 잘 다룰 수 있도록 학습하는 것이 좋다.