python - 将元素添加到 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)发生变化?如果这种方法有更好的选择,我很高兴听到
解决方案
推荐阅读
- excel - 创建文件夹的数据验证
- r - 修改ggplot2中的美学映射以获得正确的情节图例
- java - 将 list.map 返回类型从列表更改为 JsonArray
- reactjs - 使用
上传文件。我将如何将其设置为声明以供后续提交到列表? - python - 从python中的父类实例化
- android - 如何使用 AppBarConfiguration 设置 NavigationView?
- sql - 如何根据另一个表值编写查询
- amazon-web-services - 将 npm db-migrate 与 Elastic Beanstalk 一起使用
- java - Hibernate - 重写旧版 createCriteria
- html - 鼠标悬停后隐藏嵌入的 youtube 视频控件