pil 到 numpy 的转换导致数组如下:
a = array([ [[r,g,b],[r,g,b].....[r,g,b],[r,g,b]] , [[r,g,b],[r,g,b.....]] , int8)
rgb 值的三元组;在行内这样:
a[0] = [[r,g,b],[r,g,b].....[r,g,b],[r,g,b]] = first row
有没有一种快速的方法可以将这样的三元组 numpy 数组转换为 (好吧特别是回来..)
a = [[rrrr],[rrrrr],[rrrrr],.... [bbbbb],[bbbbbb],[bbbbbb]...,[ggggg],[ggg],[ggg]]
或
喜欢
a=[[rrr],[rrrrr],[.... ...]] **or** aa = [rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr..]
b=[[bbb],[bbbbb],[.... ...]]**or** bb = [bbbbbbbbbbbbbbbbbbbbbbbbbb..]
c=[[ggg],[ggggg],[.... .]] **or** cc = [ggggggggggggggggggggggggg..]
我的问题是我有像 aa bb cc 这样的格式,并且知道图像大小为 640x480 如何将它快速转换为 pill 格式,如下所示
a = array([ [[r,g,b],[r,g,b].....[r,g,b],[r,g,b]] , [[r,g,b],[r,g,b.....]] , int8)
最佳答案
a.T
能满足您的需求吗?
我假设您已经使用 numpy 的 asarray
函数创建了数组。
import Image, numpy
im = Image.open('test.png')
a = numpy.asarray(im)
R,G,B,A = a.T
以上将为您提供 4 个独立的二维数组,每个波段一个。
关于python - numpy 和 pil reshape 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5036653/