【问题标题】:Creating an image using two numpy arrays使用两个 numpy 数组创建图像
【发布时间】:2021-08-30 00:24:48
【问题描述】:

我正在做一个项目,我在一个名为 Prismatic 的程序中进行模拟,以获取我以后想要使用的文件,Prismatic 输出 h5 格式的文件,我能够使用 Python 从中提取数据,模拟生成一个图像,该图像保存在两个数据集(dim1,dim2)中,每个数据集都是一个大小为 219 的 numpy 数组,我试图再次从它们创建图像,但我不确定它是如何工作的,我试图堆叠numpy 数组,但我只是在图像中得到一条线,我刚刚了解了 numpy 数组,我对它们还不太了解,有人可以帮忙吗?这是我的代码。

fi = h5py.File('ty.h5')
a = fi['4DSTEM_simulation']['data']['realslices']['annular_detector_depth0000']['dim1'][:]
b = fi['4DSTEM_simulation']['data']['realslices']['annular_detector_depth0000']['dim2'][:]
merge_arr = numpy.stack((a, b), axis=0)
data = Image.fromarray(merge_arr)
if data.mode != 'RGB':
    data = data.convert('RGB')

【问题讨论】:

  • RGB 图像是一个形状为 (n,m,3) 的数组。你的两个 numpy 数组的形状是什么?
  • 当我打印它们的形状时,我得到 (219,) 两者,并且所有条目的值都相同,我猜这是因为模拟输出是对称的

标签: python arrays image numpy


【解决方案1】:

好的,鉴于您的数据集,我设法找到了一张图片。

from matplotlib import pyplot as plt
%matplotlib inline # remove this if you are not using a jupyter notebook
import h5py
# data link https://file.io/riS5juuYLNin

f = h5py.File('ty.h5')

realslice = (f['4DSTEM_simulation']
 ['data']
 ['realslices']
 ['annular_detector_depth0000']
 ['realslice'])[:]

plt.imshow(realslice)
#plt.show() # add this if you are not using a jupyter notebook

解决这个问题的真正工具是查看文件f 给定级别的键是什么,如f.keys()f['4DSTEM_simulation'].keys() 等,然后查看其中项目的形状严格要求这些键访问的可用对象。最终我找到了一张图片。我对这些数据一无所知,所以也许还有更多。看来您最初的问题实际上并不需要解决。两个 246x1 阵列绝对不会以独特的方式形成图像。

【讨论】:

  • 看起来很完美,非常感谢,这就是预期的图像
猜你喜欢
  • 2017-12-28
  • 1970-01-01
  • 2020-05-11
  • 2016-03-23
  • 2020-09-10
  • 1970-01-01
  • 1970-01-01
  • 2021-12-14
相关资源
最近更新 更多