如何将图像文件夹中的所有图像大小提取到Python数组中?

2024-10-01 02:39:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图绘制一个包含数千张图片的大文件夹的图像大小分布图(上传到我当地的Jupyter笔记本上)。所有图像都有.PNG扩展名

我需要创建一个熊猫的数据框架,该框架必须导致:

                   **Size**
df = [[filename1,   1200 800],
      [filename2,   1100 850],
      [filename3,   1200 800],
      ....]

我尝试了很多方法,但最后一条似乎是实现这一目标的好途径,我被阻止了:

# load all images in a directory
from os import listdir
from matplotlib import image
# load all images in a directory
loaded_images = list()
for filename in listdir('MyImagesFolder/'):
    # load image
    img_data = image.imread('MyImageFolder/' + filename)
    # store loaded image
    loaded_images.append(img_data)
    print('> loaded %s %s' % (filename, img_data.shape))
    

结果:

loaded Anchusa italica buglosse italien 05-05-2009 13-42-33.png (600, 800, 3)
> loaded Anchusa italica buglosse italien 05-05-2009 13-42-55.png (600, 800, 3)
> loaded Anchusa italica buglosse italien 05-05-2009 13-43-09.png (600, 800, 3)
> loaded Anchusa italica buglosse italien 05-05-2009 13-43-13.png (600, 800, 3)
> loaded Anchusa italica buglosse italien 05-05-2009 13-43-19.png (600, 800, 3)
> loaded Anchusa italica buglosse italien 05-05-2009 13-43-49.png (600, 800, 3)
> loaded Anchusa italica buglosse italien 05-05-2009 13-43-55.

然后

import pandas as pd
import matplotlib as plt

image_size_df = pd.DataFrame(data=loaded_images)

但结果是:

print(images_loaded)
[array([[[0.34901962, 0.40392157, 0.25882354],
        [0.34901962, 0.4117647 , 0.25882354],
        [0.34117648, 0.41568628, 0.25882354],
        ...,
        [0.85882354, 0.84313726, 0.8039216 ],
        [0.85882354, 0.84313726, 0.8       ],
        [0.8627451 , 0.84313726, 0.79607844]],

我是图像数据提取和处理的新手,花了一天多的时间寻找解决方案:/ 谢谢你的帮助


Tags: in图像imageimportimgdatapngload
1条回答
网友
1楼 · 发布于 2024-10-01 02:39:16

您当前遇到的问题是image.imread方法没有收集您认为是的信息。如果您在此处查看API文档:https://matplotlib.org/api/image_api.html您将在matplotlib.image.imread下看到,它作为数组读取RGB图像的图像数据,该数组不是关于图像大小的信息,而是创建视觉图像的实际数据

看起来您已经涵盖了文件名部分,但是您可能希望查看PIL模块以获得图像大小;参见相关SO帖子:How do I get the picture size with PIL?

从那里,您将需要创建文件名、图像宽度和图像高度的列表,这些列表可以组合到一个数据帧中

相关问题 更多 >