Создание случайных цветов (RGB)

Я только что взял обработку изображений на python на прошлой неделе по предложению друга для создания шаблонов случайных цветов. Я нашел этот фрагмент сценария онлайн, который генерирует широкий спектр разных цветов в спектре RGB.

def random_color():
    levels = range(32,256,32)
    return tuple(random.choice(levels) for _ in range(3))

Мне просто интересно добавить этот скрипт только для генерации одного из трех случайных цветов. Предпочтительно красный, зеленый и синий.

Ответ 1

Вот:

def random_color():
    rgbl=[255,0,0]
    random.shuffle(rgbl)
    return tuple(rgbl)

Результат - красный, зеленый или синий. Этот метод не применим к другим наборам цветов, хотя вам нужно будет создать список всех цветов, которые вы хотите выбрать, а затем используйте random.choice, чтобы выбрать их в случайном порядке.

Ответ 2

Оптимальный способ генерации триглетов RGB в пределах 256 (ака 8-байтовых) диапазонов

color = list(np.random.choice(range(256), size=3))

color теперь представляет собой список размеров 3 со значениями в диапазоне 0-255. Вы можете сохранить его в списке для записи, если цвет был создан раньше или нет.

Ответ 3

Вы также можете использовать Hex Color Code,

Name    Hex Color Code  RGB Color Code
Red     #FF0000         rgb(255, 0, 0)
Maroon  #800000         rgb(128, 0, 0)
Yellow  #FFFF00         rgb(255, 255, 0)
Olive   #808000         rgb(128, 128, 0)

Например,

import matplotlib.pyplot as plt
import random

number_of_colors = 8

color = ["#"+''.join([random.choice('0123456789ABCDEF') for j in range(6)])
             for i in range(number_of_colors)]
print(color)

['# C7980A', '# F4651F', '# 82D8A7', '# CC3A05', '# 575E76', '# 156943', '# 0BD055', '# ACD338']

Давайте попробуем построить их на точечной диаграмме

for i in range(number_of_colors):
    plt.scatter(random.randint(0, 10), random.randint(0,10), c=color[i], s=200)

plt.show()

enter image description here

Ответ 4

С пользовательскими цветами (например, темно-красный, темно-зеленый и синий):

import random

COLORS = [(139, 0, 0), 
          (0, 100, 0),
          (0, 0, 139)]

def random_color():
    return random.choice(COLORS)

Ответ 5

color = lambda : [random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)

Ответ 6

Вдохновленный другими ответами, это более правильный код, который выдает целочисленные значения 0-255 и добавляет альфа = 255, если вам нужен RGBA:

tuple(np.random.randint(256, size=3)) + (255,)

Если вам просто нужен RGB:

tuple(np.random.randint(256, size=3))