Распечатать изображение случайных цветных пикселей из списка - PullRequest
1 голос
/ 16 апреля 2020

Мне нужно напечатать своего рода «фон» из случайных пикселей, но выбрать только цвета из заданного списка. пример изображения

Я использую этот код для печати изображения:

import numpy as np
import matplotlib.pyplot as plt

img = (np.random.standard_normal([28, 28, 3]) * 255).astype(np.uint8)
plt.imshow(img)

Но у меня возникают проблемы с реализацией выбора цветов из списка в img 'массив', в шестнадцатеричном или RGB представлении. Подойдет любое решение, не обязательно в matplotlib. Спасибо!

Ответы [ 3 ]

1 голос
/ 16 апреля 2020

Как я понимаю, вам нужен список предопределенных цветов:

import numpy as np
import matplotlib.pyplot as plt
import random

colors = [
    (1.0, 0.0, 0.0),
    (0.0, 1.0, 0.0),
    (0.0, 0.0, 1.0),
    (1.0, 1.0, 0.0),
]
img = np.zeros(shape=(28, 28, 3))
# print(img)
for i in range(28):
    for j in range(28):
        img[i, j] = random.choice(colors)
plt.imshow(img)
0 голосов
/ 16 апреля 2020

Я не вижу, где вы реализуете список, кроме того, standard_normal дает вам значения в [-1,1], поэтому после приведения их к uint8 они все еще технически случайны и находятся в нужном диапазоне, но ...

Это то, что вы ищете?

import numpy as np
import matplotlib.pyplot as plt
numberOfColors = 10
imgShape = [28,28,3]

colorGenerator = lambda channels : [ 127*(np.random.standard_normal([channels]) + 1.0)]
#generate a list of possible colours
colorList = np.array([colorGenerator[channels] for i in range(numberOfColors)],dtype=np.uint8)
#pick a colour from the list for each pixel
indices   = np.random.randint(0,numberOfColors,size=[imgShape[0],imgShape[1]]).astype(np.int)
img = colorList[indices].reshape(imgShape)

plt.imshow(img)
plt.show()
0 голосов
/ 16 апреля 2020

вы можете выбрать случайным образом из списка:

import random

colors = ['#AABBCC', '#FFFF00', '#AA00AA']
random_index = random.randint(0, len(colors)-1)

# then you can access the random chosen color like this:
colors[random_index]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...