我正在尝试将.tiff转换为数组,以便我可以逐个像素地添加图像,并对它们执行其他几项操作。我正在使用numpy.fromstring()和im.tostring进行转换。
def image2array(im):
newArr = numpy.fromstring(im.tostring(),numpy.uint16)
newArr2 = numpy.reshape(newArr,im.size)
return newArr2
根据文档,tostring使用标准的“原始”编码器返回包含像素数据的字符串。而fromstring使用标准的“原始”解码器从字符串中的像素数据创建图像内存。
代码可以工作,但我不太清楚原始图像编码器是如何工作的。数组是否产生了字符串数据,类似于可以解码为图像的位数据?或者它是实际的像素值?我正在尝试获取实际像素值,所以我应该使用im.getdata()?
答案 0 :(得分:1)
通过numpy.array(pilIm)和PIL.Image.fromarray(numpyArray)可能有更简单的方法来实现你的想法: NumPy, PIL adding an image
如果你想加载压缩的tiff文件,请查看tifffile.py:http://code.google.com/p/pylibtiff/
编辑:numpy.array而不是numpy。 as array
答案 1 :(得分:0)
是。您应该使用getdata()
。您可以直接使用它创建阵列。
This post给出了如何将numpy和PIL结合使用的一个很好的例子。