def get_all_annotations(project, pro_version): logger.debug(f'Getting all annotations') annotations = [] mat_file = os.path.join(base_dir, 'projects', project, 'drone.cam.npz') fov.set_camera_params(mat_file) reg_files = os.path.join(base_dir, 'projects', project, '*.json') files = glob.glob(reg_files) drone_log.get_log_data(project) for file in files: with open(file, 'r') as fp: json_data = json.load(fp) objects = json_data['objects'] video_file = file.split(os.sep)[-1][:-5] drone_log.get_video_data_from_data_file(project, video_file) fov.set_image_size(*drone_log.video_size) drone_log.match_log_and_video() if objects: for obj in objects: if obj['type'] == 'FrameLine' or obj['type'] == 'FramePoint': annotation = get_frame_obj_data(obj) annotation.extend([video_file, project, pro_version]) else: logger.debug( f'Unknown annotation found of type: {obj["type"]}') annotation = None annotations.append(annotation) return annotations
def get_all_annotations(project, pro_version, video=None): logger.debug(f'Getting all annotations') annotations = [] drone = Drone.query.get_or_404(project.drone_id) fov.set_camera_params(*drone.calibration) drone_log.get_log_data(project.log_file) videos = [video] if video else project.videos for video in videos: json_data = json.loads(video.json_data) objects = json_data['objects'] drone_log.set_video_data(video.duration, video.frames, (video.width, video.height), (video.latitude, video.longitude)) fov.set_image_size(*drone_log.video_size) drone_log.match_log_and_video() if objects: for obj in objects: if obj['type'] == 'FrameLine' or obj['type'] == 'FramePoint': annotation = get_frame_obj_data(obj) annotation.extend([video.file, project.name, pro_version]) else: logger.debug( f'Unknown annotation found of type: {obj["type"]}') annotation = None annotations.append(annotation) return annotations
def video(project, video_file): logger.debug( f'Video called with video: {video_file} and project: {project}') mat_file = os.path.join(base_dir, 'projects', project, 'drone.cam.npz') fov.set_camera_params(mat_file) drone_log.get_log_data(project) drone_log.get_video_data_from_data_file(project, video_file) fov.set_image_size(*drone_log.video_size) video_start_time = read_video_start_time(project, video_file) if video_start_time: drone_log.video_start_time = video_start_time else: video_start_time, message = drone_log.match_log_and_video() if message: flask.flash(message, 'warning') write_video_start_time(project, video_file, video_start_time) plot_script, plot_div = plot_log_data.get_log_plot_with_video( drone_log.log_data(), video_start_time, drone_log.video_duration, drone_log.video_nb_frames) json_data = read_json_annotations(project, video_file) args = dict(project=project, video=video_file, json_data=json_data, plot_script=plot_script, plot_div=plot_div, video_width=drone_log.video_size[0], video_height=drone_log.video_size[1], num_frames=drone_log.video_nb_frames, fps=drone_log.video_nb_frames / drone_log.video_duration, video_start_time=video_start_time) logger.debug(f'Render video {video_file} for {project}') return flask.render_template('videos/video.html', **args)
def plot_log(project): drone_log.get_log_data(project) plot_script, plot_div = plot_log_data.get_log_plot(drone_log.log_data()) logger.debug(f'Render video plot for {project}') return flask.render_template('videos/plot.html', plot_div=plot_div, plot_script=plot_script, project=project)
def plot_log(project_id): project = Project.query.get_or_404(project_id) drone_log.get_log_data(project.log_file) plot_script, plot_div = plot_log_data.get_log_plot(drone_log.log_data()) logger.debug(f'Render video plot for {project_id}') return flask.render_template('projects/plot.html', plot_div=plot_div, plot_script=plot_script, project_id=project_id)
def video(video_id): logger.debug(f'Video called with video: {video_id}') video = Video.query.get_or_404(video_id) project = Project.query.get_or_404(video.project_id) drone = Drone.query.get_or_404(project.drone_id) fov.set_camera_params(*drone.calibration) log_file = os.path.join(data_dir, project.log_file) drone_log.get_log_data(log_file) drone_log.set_video_data(video.duration, video.frames, (video.width, video.height), (video.latitude, video.longitude)) fov.set_image_size(*drone_log.video_size) json_data = video.json_data if type(video.json_data) is str else '{}' video_start_time = video.start_time if video_start_time: drone_log.video_start_time = video_start_time else: video_start_time, message = drone_log.match_log_and_video() if message: flask.flash(message, 'warning') video.start_time = video_start_time db.session.commit() plot_script, plot_div = plot_log_data.get_log_plot_with_video( drone_log.log_data(), video_start_time, drone_log.video_duration, drone_log.video_nb_frames) args = dict(project_id=project.id, video=video, json_data=json.loads(json_data), plot_script=plot_script, plot_div=plot_div, video_width=drone_log.video_size[0], video_height=drone_log.video_size[1], num_frames=drone_log.video_nb_frames, fps=drone_log.video_nb_frames / drone_log.video_duration, video_start_time=video_start_time) logger.debug(f'Render video {video.file}') return flask.render_template('videos/video.html', **args)