image_file = os.path.join(image_path, '%018d.png' % dataset_idx)显示FileNotFoundError: [Errno 2] No such file or directory: '/media/root1/D/Workspace/mmdetection3d/data/kitti_bev/training/velodyne/000000000000000000.bin'而我的代码路径为/media/root1/D/Workspace/mmdetection3d/data/kitti_bev/training/label_2/000018.txt,应该怎么修改
时间: 2023-07-11 16:59:30 浏览: 371
根据你提供的信息,你要访问的文件路径为'/media/root1/D/Workspace/mmdetection3d/data/kitti_bev/training/label_2/000018.txt',但是你的代码中的路径为'/media/root1/D/Workspace/mmdetection3d/data/kitti_bev/training/velodyne/000000000000000000.bin',这是不匹配的。
你需要将代码中的路径修改为'/media/root1/D/Workspace/mmdetection3d/data/kitti_bev/training/label_2/000018.txt',并确保文件存在。如果你能够找到一个包含多个文件的文件夹,你也可以使用代码来遍历文件夹并找到你需要的文件。
相关问题
from torch.utils.data import Dataset from torch.utils.data.dataset import T_co import os import cv2 as cv def read_label(path): file = open(path, "r", encoding='utf-8') label = file.readline() file.close() return label class MyDataset(Dataset): def _init__(self, train_path): self.train_path = train_path self.image_path = os.path.join(train_path, 'image') self.label_path = os.path.join(train_path, "label") self.image_path_list = os.listdir(self.image_path) def __getitem__(self, index) -> T_co: image_name = self.image_path_list[index] image_path = os.path.join(self.image_path, image_name) img = cv.imread(image_path) label_name = 'txt'.join(image_name.rsplit(image_name.split('. ')[-1], 1)) label_path = os.path.join(self.label_path, label_name) label = read_label(label_path) return img,label def __len__(self): return Len(self.image_path_list) my_dataset = MyDataset("dataset/train") data_index = 100 img, label = my_dataset[data_index] cv.imshow(label+ str(data_index)+str(Len(my_dataset)) + ')', img) cv.waitKey(0)详解这段代码
这段代码定义了一个自定义的 PyTorch 数据集类 MyDataset,用于加载训练数据集中的图像和标签。其中:
- `_init__` 方法初始化了数据集的路径和图像文件名列表;
- `__getitem__` 方法按照给定的索引 index,读取对应的图像和标签,并返回它们的元组;
- `__len__` 方法返回数据集中图像的数量。
具体来说,这个数据集类假设训练数据集中的图像文件都存储在 "dataset/train/image" 目录下,而对应的标签文件都存储在 "dataset/train/label" 目录下,且标签文件的文件名和对应的图像文件名一致,只是后缀名不同(图像文件的后缀名为图片格式,标签文件的后缀名为 "txt")。标签文件中只包含一个文本行,表示对应图像的标签。
在这个数据集类中,`read_label` 函数用于读取标签文件的内容,`cv.imread` 函数用于读取图像文件的内容,`os.path.join` 函数用于拼接路径,`os.listdir` 函数用于列出目录下的文件名列表。
最后,这段代码创建了一个 MyDataset 类的实例 my_dataset,用于加载 "dataset/train" 目录下的训练数据集。然后它从数据集中取出第 100 个样本,显示它的图像和标签。
def save_image(self, method='qt5'):#保存图像 self.filename = '{}/face_dataset/{}/'.format(rootdir, self.dialog_text_id) self.mk_folder(self.filename) if method == 'qt5': photo_save_path = os.path.join(os.path.dirname(os.path.abspath('__file__')), '{}'.format(self.filename)) save_filename = datetime.now().strftime("%Y%m%d%H%M%S") + ".png" self.showImage.save(photo_save_path + save_filename) else: p = os.path.sep.join([output, "{}.png".format(str(total).zfill(5))]) cv2.imwrite(p, self.showImage) self.Dialog.lcdNumber_collection_nums.display(self.have_token_photos)
这段代码是用来保存图像的,具体来说,它会将当前显示的图像保存为 PNG 格式的图片,文件名为当前时间(精确到秒)加上 ".png" 后缀,保存在指定的目录下。如果方法参数为 "qt5",则使用 Qt5 库的方法来保存图像,否则使用 OpenCV 库的方法来保存图像。最后,它还会更新界面上的数字显示,显示已经保存的图片数量。
阅读全文