我正试图绘制一个包含数千张图片的大文件夹的图像大小分布图(上传到我当地的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]],
我是图像数据提取和处理的新手,花了一天多的时间寻找解决方案:/ 谢谢你的帮助
您当前遇到的问题是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?
从那里,您将需要创建文件名、图像宽度和图像高度的列表,这些列表可以组合到一个数据帧中
相关问题 更多 >
编程相关推荐