我正在启动一个 ML 项目,在真正制作模型之前,我想尝试导入我的图像(我有一个仅保存图像的文件,如果重要的话它们是 .png)并使用它们并操纵它们,使它们适合模型。我所做的就是加载文件,然后尝试显示它们,但它没有显示任何内容。文件路径似乎是正确的,因为我第一次尝试它是错误的,并给出了一个大错误消息,但现在似乎没有这样做。我如何获得它,以便当我加载文件时,我可以运行类似
data[0]
并查看第一张图像(或图像的详细信息)。我的代码如下(我从该代码上方的 tensorflow 指南中导入了很多其他内容,所以我认为不是这样,但如果有必要,我可以在其他导入中进行编辑):
import pathlib
import sklearn.datasets
data_dir = sklearn.datasets.load_files('/Users/USer/Downloads/C4IMAGES/', shuffle='False')
data_dir
运行的输出是:
{'data': [],
'filenames': array([], dtype=float64),
'target_names': [],
'target': array([], dtype=float64),
'DESCR': None}
如果我尝试 data_dir[0] 应显示第一张图像,则错误消息为
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-48-5541d6af8248> in <module>
2 import sklearn.datasets
3 data_dir = sklearn.datasets.load_files('/Users/USer/Downloads/C4IMAGES/', shuffle='False')
----> 4 data_dir[0]
KeyError: 0
感谢您的帮助!
最佳答案
实际上,sklearn.datasets.load_files
的文档表示图像或任何数据文件必须存在于以下层次结构中:
container_folder/
category_1_folder/
file_1.txt file_2.txt … file_42.txt
category_2_folder/
file_43.txt file_44.txt …
我认为您的图像位于路径 /Users/USer/Downloads/C4IMAGES/
中。
在这种情况下,您必须创建一个子文件夹,例如 category 1
、category 2
(如果您的数据未分类,只需创建一个任意名称的子文件夹,然后将所有数据放入子文件夹中的图像)并将具有相应类别的图像放入子文件夹中。
现在,您可以在函数 load_files
中传递参数 /Users/USer/Downloads/C4IMAGES/
,它应该将您的数据加载到 python 列表 data_dir 中['data']
二进制格式。
然后,您可以将图像从二进制格式转换为 numpy 数组并显示图像:
import io
import numpy as np
from PIL import Image
# decode i'th image using:
img = Image.open(io.BytesIO(data_dir.data[i]))
img = np.asarray(img)
# display i'th image
import matplotlib.pyplot as plt
plt.imshow(img)
plt.show()
引用文献:
1.https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_files.html
2.Convert image loaded as binary string into numpy array
关于python - 使用Sklearn加载本地文件,尝试显示任何图像返回空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59147049/