import os import json from crud.service.scene_service import SceneService this_dir = os.path.dirname(os.path.abspath(__file__)) root_dir = os.path.join(this_dir, "data") def get_scene_names(): scenes = SceneService.get_scene_names() scenes = list(scenes) scenes.sort() return scenes def get_one_scene(s): # 获取s目录下的所有文件信息 result = SceneService.get_scene_info(s) return result[0] if result else None # todo 旧的 def get_one_scene_(s): # 获取s目录下的所有文件信息 """{ "scene": "example", # 第一层的目录名 "frames": [ # label下的文件名,即标注结果文件 "000950", "000965", "000970", "000975" ], "lidar_ext": ".pcd", # lidar目录下的文件类型 "camera_ext": ".jpg", # 图片的文件类型 "radar_ext": ".pcd", # lidar目录下的文件类型 "aux_lidar_ext": ".pcd", # lidar目录下的文件类型 "boxtype": "psr", "camera": [ # 目录下的文件夹 "right", "left", "front" ], "calib": { # 目录 "camera": { # 目录 "front": "json文件的内容", # 文件 "left": "json文件的内容", "right": "json文件的内容" } } }""" ### scene = { "scene": s, "frames": [] } scene_dir = os.path.join(root_dir, s) frames = os.listdir(os.path.join(scene_dir, "lidar")) #print(s, frames) frames.sort() scene["lidar_ext"]="pcd" for f in frames: #if os.path.isfile("./data/"+s+"/lidar/"+f): filename, fileext = os.path.splitext(f) scene["frames"].append(filename) scene["lidar_ext"] = fileext # point_transform_matrix=[] # if os.path.isfile(os.path.join(scene_dir, "point_transform.txt")): # with open(os.path.join(scene_dir, "point_transform.txt")) as f: # point_transform_matrix=f.read() # point_transform_matrix = point_transform_matrix.split(",") if os.path.exists(os.path.join(scene_dir, "desc.json")): with open(os.path.join(scene_dir, "desc.json")) as f: desc = json.load(f) scene["desc"] = desc calib = {} calib_camera={} calib_radar={} calib_aux_lidar = {} if os.path.exists(os.path.join(scene_dir, "calib")): if os.path.exists(os.path.join(scene_dir, "calib","camera")): calibs = os.listdir(os.path.join(scene_dir, "calib", "camera")) for c in calibs: calib_file = os.path.join(scene_dir, "calib", "camera", c) calib_name, ext = os.path.splitext(c) if os.path.isfile(calib_file) and ext==".json": #print(calib_file) with open(calib_file) as f: cal = json.load(f) calib_camera[calib_name] = cal if os.path.exists(os.path.join(scene_dir, "calib", "radar")): calibs = os.listdir(os.path.join(scene_dir, "calib", "radar")) for c in calibs: calib_file = os.path.join(scene_dir, "calib", "radar", c) calib_name, _ = os.path.splitext(c) if os.path.isfile(calib_file): #print(calib_file) with open(calib_file) as f: cal = json.load(f) calib_radar[calib_name] = cal if os.path.exists(os.path.join(scene_dir, "calib", "aux_lidar")): calibs = os.listdir(os.path.join(scene_dir, "calib", "aux_lidar")) for c in calibs: calib_file = os.path.join(scene_dir, "calib", "aux_lidar", c) calib_name, _ = os.path.splitext(c) if os.path.isfile(calib_file): #print(calib_file) with open(calib_file) as f: cal = json.load(f) calib_aux_lidar[calib_name] = cal # camera names camera = [] camera_ext = "" cam_path = os.path.join(scene_dir, "camera") if os.path.exists(cam_path): cams = os.listdir(cam_path) for c in cams: cam_file = os.path.join(scene_dir, "camera", c) if os.path.isdir(cam_file): camera.append(c) if camera_ext == "": #detect camera file ext files = os.listdir(cam_file) if len(files)>=2: _,camera_ext = os.path.splitext(files[0]) if camera_ext == "": camera_ext = ".jpg" scene["camera_ext"] = camera_ext # radar names radar = [] radar_ext = "" radar_path = os.path.join(scene_dir, "radar") if os.path.exists(radar_path): radars = os.listdir(radar_path) for r in radars: radar_file = os.path.join(scene_dir, "radar", r) if os.path.isdir(radar_file): radar.append(r) if radar_ext == "": #detect camera file ext files = os.listdir(radar_file) if len(files)>=2: _,radar_ext = os.path.splitext(files[0]) if radar_ext == "": radar_ext = ".pcd" scene["radar_ext"] = radar_ext # aux lidar names aux_lidar = [] aux_lidar_ext = "" aux_lidar_path = os.path.join(scene_dir, "aux_lidar") if os.path.exists(aux_lidar_path): lidars = os.listdir(aux_lidar_path) for r in lidars: lidar_file = os.path.join(scene_dir, "aux_lidar", r) if os.path.isdir(lidar_file): aux_lidar.append(r) if radar_ext == "": #detect camera file ext files = os.listdir(radar_file) if len(files)>=2: _,aux_lidar_ext = os.path.splitext(files[0]) if aux_lidar_ext == "": aux_lidar_ext = ".pcd" scene["aux_lidar_ext"] = aux_lidar_ext # # ego_pose # ego_pose= {} # ego_pose_path = os.path.join(scene_dir, "ego_pose") # if os.path.exists(ego_pose_path): # poses = os.listdir(ego_pose_path) # for p in poses: # p_file = os.path.join(ego_pose_path, p) # with open(p_file) as f: # pose = json.load(f) # ego_pose[os.path.splitext(p)[0]] = pose if True: #not os.path.isdir(os.path.join(scene_dir, "bbox.xyz")): scene["boxtype"] = "psr" # if point_transform_matrix: # scene["point_transform_matrix"] = point_transform_matrix if camera: scene["camera"] = camera if radar: scene["radar"] = radar if aux_lidar: scene["aux_lidar"] = aux_lidar if calib_camera: calib["camera"] = calib_camera if calib_radar: calib["radar"] = calib_radar if calib_aux_lidar: calib["aux_lidar"] = calib_aux_lidar # if ego_pose: # scene["ego_pose"] = ego_pose # else: # scene["boxtype"] = "xyz" # if point_transform_matrix: # scene["point_transform_matrix"] = point_transform_matrix # if camera: # scene["camera"] = camera # if radar: # scene["radar"] = radar # if calib_camera: # calib["camera"] = calib_camera # if calib_radar: # calib["radar"] = calib_radar # if calib_aux_lidar: # calib["aux_lidar"] = calib_aux_lidar scene["calib"] = calib return scene def read_annotations(scene, frame): return SceneService.get_label_json(scene, frame) # filename = os.path.join(root_dir, scene, "label", frame+".json") # if (os.path.isfile(filename)): # with open(filename,"r") as f: # ann=json.load(f) # #print(ann) # return ann # else: # return [] # def save_annotations(scene, frame, anno): # filename = os.path.join(root_dir, scene, "label", frame+".json") # with open(filename, 'w') as outfile: # json.dump(anno, outfile)