以有效的方式将浮点数组转换为 RGBA 值

问题描述 投票:0回答:1

我正在尝试创建一个系统来获取范围从 0.0 到 1.0 的浮点数组,并根据查找表将它们转换为 RGBA 值。输出应该是一个比输入大一维的数组,最后一个维度的大小为 4 并且由 RGBA 值组成。

目前我只能通过循环来做到这一点。有人知道 numpy 索引方法可以更有效地实现相同的结果吗?

import numpy as np
import matplotlib.pyplot as plt

cyan = np.array([(x*0,x*1,x*1,255) for x in range(256)])

input_array = np.arange(0,0.8,0.05).reshape(4,4)

input_array = input_array*256

colour_array = []
for x in range(input_array.shape[0]):
    for y in range(input_array.shape[1]):
        colour_array.append(cyan[int(input_array[x,y])])
        
colour_array = np.array(colour_array).reshape(4,4,4)

plt.imshow(colour_array) 

enter image description here

python arrays numpy indexing rgb
1个回答
0
投票

使用以下内容:

index = input_array[*np.indices(shape).reshape(2, -1)].astype(int)
colour_array = cyan[index].reshape(4, *shape)
© www.soinside.com 2019 - 2024. All rights reserved.