from torch.utils.data import Dataset
from PIL import Image
import os
class MyDataset(Dataset):
    def __init__(self,root_dir):
        self.root_dir=root_dir
        self.image_paths=[
            os.path.join(root_dir,f)
            for f in os.listdir(root_dir)
            if f.endswith('jpg')
        ]

    def __len__(self):
        return len(self.image_paths)

    def __getitem__(self,idx):
        img_path=self.image_paths[idx]
        img =Image.open(img_path)
        return img

dataset =MyDataset('ants_image')
img=dataset[0]
print(f'一共有{len(dataset)}张图片')
print(f'第一张图片:{img}')


1. from torch.utils.data import Dataset

        torch:库,utils:实用工具包,data:模块,Dataset:数据集类(身份证,实际用处不大)

2 . from PIL import Image

        PIL:Python Imaging Library(Python 图像处理库),Image:图片处理模块

3. import os

  os 是 模块,全称 Operating System(操作系统)

4 .  __init__魔法方法作用:类创建时自动调用

5 .        def __init__(self,root_dir):

        self的作用:指代类的实例

6. os.path.join(root_dir,f)
        os,模块,path路径子模块,join连接路径函数
7.os.listdir(root_dir)
        打开文件夹,返回子文件名的列表
8.os.path.join(root_dir,f)
            for f in os.listdir(root_dir)
            if f.endswith('jpg')
表达式 for f in 列表 if 表达式,即列表推导式
作用是文件夹里每一个jpg文件把文件夹名和文件名连接起来形成新的路径


9  .      def __len__(self):
        return len(self.image_paths)
魔法方法里可以使用len,更方便


10 .       def __getitem__(self,idx):
        img_path=self.image_paths[idx]
        img =Image.open(img_path)
        return img
从self.image_paths列表中索引拿到图片,打开并返回一个图片对象


11 .       dataset =MyDataset('ants_image')
img=dataset[0]
dataset是数据集对象。datset[0]是图片对象

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐