有一个文件夹,下面有多个文件夹,其中包含多个类别的图像。读取图像文件并转为numpy数组,将图像维度转为[图像数量,3,224,224],得到图像标签
时间: 2024-05-14 20:14:21 浏览: 89
,标签为每个图像所在的文件夹的名称。
代码实现如下:
```python
import os
from PIL import Image
import numpy as np
# 设置图像大小
image_size = (224, 224)
# 设置图像文件夹路径
data_path = 'path/to/data_folder/'
# 获取所有图像文件夹的名称
folders = os.listdir(data_path)
# 初始化图像和标签列表
images = []
labels = []
# 遍历每个图像文件夹
for folder_name in folders:
folder_path = os.path.join(data_path, folder_name)
# 获取当前图像文件夹下所有图像文件的路径
image_paths = [os.path.join(folder_path, f) for f in os.listdir(folder_path) if f.endswith('.jpg')]
# 遍历每个图像文件,读取图像并转为numpy数组
for image_path in image_paths:
with Image.open(image_path) as img:
# 调整图像大小
img = img.resize(image_size)
# 将图像转为numpy数组
img_arr = np.array(img)
# 转换图像维度
img_arr = np.transpose(img_arr, (2, 0, 1))
# 添加到图像列表中
images.append(img_arr)
# 添加标签
labels.append(folder_name)
# 将图像列表和标签列表转为numpy数组
images = np.array(images)
labels = np.array(labels)
# 打印图像和标签的形状
print('Images shape:', images.shape)
print('Labels shape:', labels.shape)
```
注:以上代码中,假设图像文件格式为jpg。如果是其他格式,可相应修改代码中的判断条件。
阅读全文