gpt4 book ai didi

python - Numpy:将 RGB 平面数组转换为矩阵

转载 作者:太空宇宙 更新时间:2023-11-03 11:20:42 24 4
gpt4 key购买 nike

我有一个包含图像中所有像素的 RGB 值的数组。假设一个 4x4 图像,数组大小为 48,其中前 16 个值是红色值,接下来的 16 个是绿色值,最后 16 个是蓝色值:

[r0, r1, ..., r15, g0, g1, ..., g15, b0, b1, ..., b14, b15]

现在我想将该数组转换为深度为 3 的 4x4 矩阵,形式如下:

[[[r0, g0, b0], ..., [r3, g3, b3]],
...
[[r12, g12, b12], ..., [r15, g15, b15]]]

为此,我正在做一个reshape + transpose + reshape:

import matplotlib.pyplot as plt

N = 4
numpy.random.seed(0)
rrggbb = numpy.random.randint(0, 255, size=N*N*3, dtype='uint8')
imgmatrix = rrggbb.reshape((3, -1)).transpose().reshape((N, N, 3))

plt.imshow(imgmatrix)
plt.show()

enter image description here

是否有更高效/更快捷的方法来做到这一点? (即:较少的 reshape /转置)

最佳答案

这里有一个少了一步的选项:

rrggbb.reshape((3, N, N)).transpose((1,2,0))

(rrggbb.reshape((3, N, N)).transpose((1,2,0)) == imgmatrix).all()
# True

或者您可以使用 np.moveaxisaxis 0 移动到最后一个轴:

np.moveaxis(rrggbb.reshape((3, N, N)), 0, -1)

(np.moveaxis(rrggbb.reshape((3, N, N)), 0, -1) == imgmatrix).all()
#True

关于python - Numpy:将 RGB 平面数组转换为矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43523022/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com