如何解决如何从图像文件夹中提取所有图像大小到Python数组中?
我试图绘制一个大文件夹的图像大小分布图,该文件夹包含数千张照片(已在我的本地Jupyter笔记本上上传)。所有图像均具有.PNG扩展名。
我需要创建一个熊猫的数据框,该框必须导致此错误:
**Size**
df = [[filename1,1200 800],[filename2,1100 850],[filename3,....]
我尝试了很多方法,但最后一道方法被我挡住了,他似乎是实现此目标的好方法:
# 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,3)
> loaded Anchusa italica buglosse italien 05-05-2009 13-43-09.png (600,3)
> loaded Anchusa italica buglosse italien 05-05-2009 13-43-13.png (600,3)
> loaded Anchusa italica buglosse italien 05-05-2009 13-43-19.png (600,3)
> loaded Anchusa italica buglosse italien 05-05-2009 13-43-49.png (600,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.34117648,0.41568628,...,[0.85882354,0.84313726,0.8039216 ],0.8 ],[0.8627451,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?
从那里,您将要创建一个文件名,图像宽度和图像高度的列表,可以将它们合并到一个熊猫数据框中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。