Случайные пиксели? (Матрицы Numpy) - PullRequest
0 голосов
/ 01 апреля 2020

Я экспериментирую с numpy, и я хотел бы попросить решение для следующего кода. На самом деле я хотел бы сгенерировать изображение 256x256 с самого начала, используя случайную схему RGB - возможно, это будет путь к go. Любые numpy идеи будут приветствоваться!

# -*- coding: utf-8 -*-

from PIL import Image
import numpy as np

def transform_matrice(data):

    aux_data = []

    for e in data:
        aux = []
        for a in e:
            aux.append(np.array([[random.randrange(255), random.randrange(255), random.randrange(255)]]))
        aux_data.append(aux)

    return aux_data

w, h = 250, 250
data = np.zeros((h, w, 3), dtype=np.uint8)

ret = transform_matrice(data)

img = Image.fromarray(ret, 'RGB')
img.save('eg.png')
img.show()

с этим кодом я получил следующую ошибку:

AttributeError: 'list' object has no attribute '__array_interface__'

1 Ответ

0 голосов
/ 01 апреля 2020

Вам не нужно создавать пустую таблицу data, также вам не нужно использовать циклы for, numpy может сделать это за вас! np.random.randint создаст вам трехмерную матрицу размера (w, h, 3) с целыми числами от 0 до 255, используя следующую команду:

def transform_matrice(w,h):
        return np.random.randint(0,256,size=(w,h,3)).astype('uint8')

ret = transform_matrice(250,250)

Нет, что я положил 256 и не 255 как второй параметр, так как параметр на единицу выше целого числа, которое вы хотите

...