关于在labelme批量转化json文件时PermissionError: [Errno 13] Permission denied: 'F:/zkx/list_path[i]'的解决

Belle ·
更新时间:2024-09-20
· 989 次阅读

首先我要解释一下,很多时候出现这个问题,并不是你的文件有毛病,很可能是你代码读取的路径不对,这就要追究到代码本身。批量转化可以在json_to_dataset文件里直接运行代码实现。这个思路还要感谢我的一个师兄。

代码如下:

import argparse import base64 import json import os import os.path as osp import imgviz import PIL.Image from labelme.logger import logger from labelme import utils import cv2 from math import * import numpy as np import random import rotate def main(): list_path = os.listdir('F:/zkx') for i in range(0, len(list_path)): logger.warning('This script is aimed to demonstrate how to convert the' 'JSON file to a single image dataset, and not to handle' 'multiple JSON files to generate a real-use dataset.') parser = argparse.ArgumentParser() parser.add_argument('--json_file') parser.add_argument('-o', '--out', default=None) args = parser.parse_args() json_file = 'F:/zkx/' + list_path[i] print(list_path[i]) if args.out is None: out_dir = osp.basename(json_file).replace('.', '_') # 返回文件名 out_dir = osp.join(osp.dirname(json_file), out_dir) # 把目录和文件名合成一个路径 else: out_dir = args.out if not osp.exists(out_dir): os.mkdir(out_dir) # 用于以数字权限模式创建目录 data = json.load(open(json_file)) imageData = data.get('imageData') if not imageData: imagePath = os.path.join(os.path.dirname(json_file), data['imagePath']) # os.path.dirname返回文件路径 with open(imagePath, 'rb') as f: imageData = f.read() imageData = base64.b64encode(imageData).decode('utf-8') img = utils.img_b64_to_arr(imageData) label_name_to_value = {'_background_': 0} for shape in sorted(data['shapes'], key=lambda x: x['label']): label_name = shape['label'] if label_name in label_name_to_value: label_value = label_name_to_value[label_name] else: label_value = len(label_name_to_value) label_name_to_value[label_name] = label_value lbl, _ = utils.shapes_to_label( img.shape, data['shapes'], label_name_to_value ) label_names = [None] * (max(label_name_to_value.values()) + 1) for name, value in label_name_to_value.items(): label_names[value] = name lbl_viz = imgviz.label2rgb( label=lbl, img=imgviz.asgray(img), label_names=label_names, loc='rb' ) PIL.Image.fromarray(img).save(osp.join(out_dir, 'img.png')) utils.lblsave(osp.join(out_dir, 'label.png'), lbl) PIL.Image.fromarray(lbl_viz).save(osp.join(out_dir, 'label_viz.png')) with open(osp.join(out_dir, 'label_names.txt'), 'w') as f: for lbl_name in label_names: f.write(lbl_name + '\n') logger.info('Saved to: {}'.format(out_dir)) if __name__ == '__main__': main()
作者:szumaine



path JSON errno list

需要 登录 后方可回复, 如果你还没有账号请 注册新账号