【问题标题】:how can save some 3d images in a 4d array in python? [closed]如何在 python 中将一些 3d 图像保存在 4d 数组中? [关闭]
【发布时间】:2018-09-08 02:22:00
【问题描述】:

我想阅读有关 256 X 512 RGB 图像的信息(我正在笔记本电脑上的 C:\folder_test 中记录数据)。所以它是一个形状为 (256,512,3) 的 3D 数组,第三维包含颜色 R、G 和 B

现在,我想(加载)读取 45 个这样的图像并制作这些图像的数组。所以我决定制作一个 4D 数组,其维度为 (45, 256, 512, 3),这里 45 的第一维是图像的数量,第二、第三和第四维是图像的维数,它们是 (256, 512, 3)

我尝试使用连接来执行此操作,但出现错误。有没有办法做到这一点?

【问题讨论】:

标签: python numpy matplotlib deep-learning keras


【解决方案1】:

您可以使用Pillow(即 PIL 的旧名称)加载图像,使用NumPy 以有效的方式将图像转换为数组。

from PIL import Image
import numpy as np

image = Image.open("YOUR_IMAGE_PATH")
array = np.array(image)

【讨论】:

    【解决方案2】:
    from scipy import misc
    import numpy as np
    import glob
    
    images = np.array([misc.imread(fname) for fname in glob.glob('./*.png')])
    print(images.shape)
    

    更改本地目录的路径。

    【讨论】:

    • scipy.misc.imread 已弃用,将在 SciPy 1.2.0 中删除。可以改用imageio.imread
    【解决方案3】:

    您可以创建一个 list 变量并将图像一张一张地附加如下:

    imageCollection = []
    for oneImagePath in (imagePaths):
      #code for reading the image
      image = ....     # image contains (256,512,3) shape image.
      imageCollection.append (image)
    

    就是这样。 imageCollection 是您想要的。

    【讨论】:

      【解决方案4】:

      我认为您在连接之前忘记扩展维度:

      import numpy as np
      pics = [np.random.sample((256 , 512 , 3)) for i in range(45)]
      pics = [np.expand_dims(pic, axis=0) for pic in pics]
      np.shape(np.concatenate(pics))
      

      这将为您提供 (45, 256, 512, 3),而图片中的每个条目的形状为 (1, 256, 512, 3)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-23
        • 1970-01-01
        • 1970-01-01
        • 2021-07-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多