반응형
파이썬 RGB 숫자로 색깔 이름 프린트하기(feat. webcolors)
RGB를 입력하면 색깔 이름을 프린트하는 코드를 작성한다. 결과는 다음과 같이 나올 수 있도록 한다.
Input
cname = RGB(255, 0, 0)
Output
Red
Input
cname = RGB(254, 1, 1)
Output
It is close to Red.
라이브러리
1
2
|
import webcolors
import matplotlib.pyplot as plt
|
cs |
Webcolors
Webcolors 라이브러리는 HTML 및 CSS로 정의된 색상 이름 및 색상 값 형식으로 작업하기 위한 라이브러리입니다.
Webcolors Documentation
Importing Libraries
1
2
|
import webcolors
import matplotlib.pyplot as plt
|
cs |
가장 유사한 색깔을 계산하는 함수
1
2
3
4
5
6
7
8
|
def closest_color(rgb):
differences = {}
for color_hex, color_name in webcolors.CSS3_HEX_TO_NAMES.items():
r, g, b = webcolors.hex_to_rgb(color_hex)
differences[sum([(r - rgb[0]) ** 2,
(g - rgb[1]) ** 2,
(b - rgb[2]) ** 2])] = color_name
return differences[min(differences.keys())]
|
cs |
정확한 RED color는 RGB가 (255, 0, 0)이다. (254, 0, 0)은 RED가 아니다.
(254, 0, 0) 색깔을 입력했을 때 RED를 반환하기 위해 가장 가장 가까운 색깔을 찾는 함수이다.
예를 들어, 위 함수에 rgb parameter에 (254, 0, 0)를 패스해도 RED를 반환한다.
Full Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
import webcolors
import matplotlib.pyplot as plt
def closest_color(rgb):
differences = {}
for color_hex, color_name in webcolors.CSS3_HEX_TO_NAMES.items():
r, g, b = webcolors.hex_to_rgb(color_hex)
differences[sum([(r - rgb[0]) ** 2,
(g - rgb[1]) ** 2,
(b - rgb[2]) ** 2])] = color_name
return differences[min(differences.keys())]
# RGB 색깔을 지정
color = (113, 241, 224)
try:
cname = webcolors.rgb_to_name(color)
print(f"The color is exactly {cname}")
except ValueError:
cname = closest_color(color)
print(f"The color is closest to {cname}")
plt.imshow([[color]])
plt.show()
|
cs |
결과
반응형
'공부 > 파이썬 Python' 카테고리의 다른 글
Python의 간단한 UDP 채팅방 만들기 (1) | 2022.06.30 |
---|---|
Python에서 워드 파일 처리하기ㅣDocumentㅣdocxㅣWord File Processing in Python (0) | 2022.06.25 |
Python 이미지에서 주요 색상 추출하기 (colorthief) (1) | 2022.06.06 |
파이썬으로 윈도우 주식 가격 알람 로봇 생성하기 (winotify, python) (0) | 2022.06.03 |
sympy 심파이 튜토리얼 (0) | 2022.05.21 |
댓글