首页 > 解决方案 > 将元素添加到 numpy 数组会更改输入值

问题描述

代码:

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。我尝试强制转换, IE:

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

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

标签: pythonnumpyimage-processingtiff

解决方案


推荐阅读