2015-12-19 5 views
2

Существует игра под названием Roblox, в которой игрок делает игру, как правило, из леговидного кирпича.Python PIL - Поиск ближайшего цвета (округлые цвета)

В Roblox для цветов Brick вы можете использовать типичные значения RGB, но для этого потребуется дополнительный элемент, который не очень эффективен, когда дело касается размера файла. Вместо использования значений RGB BrickColor гораздо более экономичен в размере файла. Он использует целое число, которое следует интерпретировать как определенный цвет. Here is what I mean: Color Codes

Вот отрывок из моего кода:

import Image 
f = raw_input('Image:\n') 
im = Image.open(f) 
rgb_im = im.convert('RGB') 
r, g, b = rgb_im.getpixel((x, y)) 

В моей программе, мне нужно найти код цвета близкий к значению RGB.

Как это можно сделать?

+1

вы смотрели вверх цветое руководство Lego? Там должно быть где-то, где есть RGB и Pantone, поскольку оба хотели бы соответствовать цветам. –

ответ

4

Создайте список цветов в таблице (я называю это цветами). Сортировка списка по расстоянию до г, г, б точки вы вопросительно Первого элемента в списке ближайшего цвета

def distance(c1, c2): 
    (r1,g1,b1) = c1 
    (r2,g2,b2) = c2 
    return math.sqrt((r1 - r2)**2 + (g1 - g2) ** 2 + (b1 - b2) **2) 

colors = list(rgb_code_dictionary.keys()) 
closest_colors = sorted(colors, key=lambda color: distance(color, point)) 
closest_color = closest_colors[0] 
code = rgb_code_dictionary[closest_color] 
+0

Я получил его, чтобы найти ближайшее значение RGB в таблице значений RGB, но как бы это сделать, чтобы найти целое число цвета (как в цветовых кодах, которые я связал в своем вопросе)? – GShocked

+1

Каждое значение RGB должно быть сопоставлено целому числу в качестве цветового кода. Вы можете создать словарь, где ключ - это значение RGB, а значение - целое. Замечу, что значение RGB должно быть кортежем, а не списком, чтобы он был ключом в словаре. См. Http://stackoverflow.com/questions/1938614/in-what-case-would-i-use-a-tuple-as-a-dictionary-key – mattsap

+2

Спасибо, я получил его для работы, форматируя таблицу цветов, как так: '{(27,42,53): 26, (242,243,243): 1, (163,162,165): 194 и т. д.}' – GShocked