向numpy数组添加元素会更改输入值

时间:2018-07-07 17:45:43

标签: python numpy image-processing tiff

代码:

from PIL import Image
import numpy as np

img = Image.open('test.tif')     
imarray = np.zeros(shape = (34,23,18))

for i in range(34):          # there are 34 images in the .tif file
    for j in range(18):          # each slice has size 18x23
        for k in range(23):
            try:
                img.seek(i)
                imarray[i,k,j] = img.getpixel((k,j))
            except EOFError:
                break

此代码的目的是接受.tif灰度堆栈。我希望能够将它们作为numpy数组使用,因此存储原始像素值至关重要。

此代码将每个切片成功复制到np.array“ imarray”。但是,它更改值。例如,我打印了给定切片的所有“ img.getpixel”值,值(int型)的范围在2000到65500之间。但是,imarray(float64型)中的值未超过2800。我尝试了强制转换,即:

imarray[0,j,i] = np.float64(img.getpixel((j,i)))

但这没有帮助。如何修改此代码以避免输入数据(img.getpixels)更改?如果有更好的替代方法,我很高兴听到

0 个答案:

没有答案