首页 > 解决方案 > 随机像素?(矩阵,Numpy)

问题描述

我正在试验 numpy,我想为以下代码寻求解决方案。实际上,我想从使用随机 rgb 模式开始生成 256x256 图像——这可能是要走的路。欢迎任何 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__'

标签: numpymatrixpixelnumpy-ndarray

解决方案


您不需要创建一个空data表,也不需要使用for循环,numpy 可以为您完成! np.random.randint将使用以下命令为您创建一个大小为 (w,h,3) 的 3D 矩阵,其中整数从 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 作为第二个参数,因为该参数比您想要的最大整数高一


推荐阅读