Python을 사용하여 RGB 색상을 'green'과 같은 영어 색상 이름으로 변환
색상 튜플을 '노란색'또는 '파란색'과 같은 색상 이름으로 변환하고 싶습니다.
>>> im = Image.open("test.jpg")
>>> n, color = max(im.getcolors(im.size[0]*im.size[1]))
>>> print color
(119, 172, 152)
파이썬에서 이것을 수행하는 간단한 방법이 있습니까?
웹 색상 을 사용하면 다음과 같이 할 수 있습니다.
rgb_to_name (rgb_triplet, spec = 'css3')
rgb () 색상 삼중 항에 사용하기에 적합한 3 튜플의 정수를 해당하는 정규화 된 색상 이름으로 변환합니다 (해당 이름이있는 경우). 유효한 값은 html4, css2, css21 및 css3이며 기본값은 css3입니다.
예:
>>> rgb_to_name((0, 0, 0))
'black'
그 반대의 경우도 마찬가지입니다.
>>> name_to_rgb('navy')
(0, 0, 128)
가장 가까운 색상 이름을 찾으려면 :
그러나 webcolors
요청 된 색상과 일치하는 것을 찾을 수없는 경우 예외가 발생합니다. 요청한 RGB 색상에 가장 가까운 이름을 제공하는 약간의 수정 사항을 작성했습니다. RGB 공간에서 유클리드 거리로 일치합니다.
import webcolors
def closest_colour(requested_colour):
min_colours = {}
for key, name in webcolors.css3_hex_to_names.items():
r_c, g_c, b_c = webcolors.hex_to_rgb(key)
rd = (r_c - requested_colour[0]) ** 2
gd = (g_c - requested_colour[1]) ** 2
bd = (b_c - requested_colour[2]) ** 2
min_colours[(rd + gd + bd)] = name
return min_colours[min(min_colours.keys())]
def get_colour_name(requested_colour):
try:
closest_name = actual_name = webcolors.rgb_to_name(requested_colour)
except ValueError:
closest_name = closest_colour(requested_colour)
actual_name = None
return actual_name, closest_name
requested_colour = (119, 172, 152)
actual_name, closest_name = get_colour_name(requested_colour)
print "Actual colour name:", actual_name, ", closest colour name:", closest_name
산출:
Actual colour name: None , closest colour name: cadetblue
Python을 위해 RGB를 영어로 된 색상 이름으로 변경할 수있는 pynche라는 프로그램이 있습니다.
원하는 것을 할 수있는 방법 ColorDB.nearest()
을 사용해 볼 수 있습니다 ColorDB.py
.
이 방법에 대한 자세한 정보는 여기에서 찾을 수 있습니다. ColorDB Pynche
나처럼 좀 더 친숙한 색상 이름을 원하는 사람을 위해, 당신은 사용할 수있는 CSS 2.1 색상 이름 도에 의해 제공을 webcolors
:
- 아쿠아 :
#00ffff
- 검정:
#000000
- 푸른:
#0000ff
- 푹샤:
#ff00ff
- 초록:
#008000
- 회색:
#808080
- 라임:
#00ff00
- 적갈색:
#800000
- 해군:
#000080
- 올리브:
#808000
- 보라색:
#800080
- 빨간:
#ff0000
- 은:
#c0c0c0
- 물오리:
#008080
- 하얀:
#ffffff
- 노랑:
#ffff00
- 주황색:
#ffa500
Just use fraxel's excellent answer and code for getting the closest colour, adapted to CSS 2.1:
def get_colour_name(rgb_triplet):
min_colours = {}
for key, name in webcolors.css21_hex_to_names.items():
r_c, g_c, b_c = webcolors.hex_to_rgb(key)
rd = (r_c - rgb_triplet[0]) ** 2
gd = (g_c - rgb_triplet[1]) ** 2
bd = (b_c - rgb_triplet[2]) ** 2
min_colours[(rd + gd + bd)] = name
return min_colours[min(min_colours.keys())]
A solution to your problem consists in mapping the RGB values to the HSL color space.
Once you have the color in the HSL color space you can use the H (hue) component to map it the color. Note that color is a somewhat subjective concept, so you would have to define which ranges of H corresponds to a given color.
ReferenceURL : https://stackoverflow.com/questions/9694165/convert-rgb-color-to-english-color-name-like-green-with-python
'program story' 카테고리의 다른 글
bash : 백그라운드 함수 프로세스를 조용히 종료 (0) | 2021.01.07 |
---|---|
Uri에 대한 Android URL (0) | 2021.01.07 |
Unit과 Nothing의 차이점은 무엇입니까? (0) | 2021.01.07 |
Eclipse : 스위치 케이스의 Java Enum 자동 완성 (0) | 2021.01.06 |
Ruby에서 예외 메시지에 정보를 어떻게 추가합니까? (0) | 2021.01.06 |