from aris import create_metadata_table import json example_metadata = { "FILE_NAME": "static/example_metadata/fisheye", "FRAME_RATE": 6.548702716827393, "UPSTREAM_FISH": 0, "DOWNSTREAM_FISH": 0, "NONDIRECTIONAL_FISH": 14, "TOTAL_FISH": 14, "TOTAL_FRAMES": 644, "EXPECTED_FRAMES": -1, "TOTAL_TIME": "0:01:38", "EXPECTED_TIME": "0:00:00", "UPSTREAM_MOTION": "Right To Left", "COUNT_FILE_NAME": "N/A", "EDITOR_ID": "N/A", "INTENSITY": "0.0 dB", "THRESHOLD": "0.0 dB", "WINDOW_START": 1, "WINDOW_END": 17, "WATER_TEMP": "13 degC", "FISH": [ { "FILE": 1, "TOTAL": 1, "FRAME_NUM": 12, "DIR": " N/A", "R": 13.403139282569885, "THETA": 0.1706, "L": 63.739999999999995, "DR": -1, "LDR": -1, "ASPECT": -1, "TIME": "11:54:40", "DATE": "2018-07-09", "LATITUDE": "N 00 d 0.00000 m", "LONGITUDE": "E 000 d 0.00000 m", "PAN": None, "TILT": None, "ROLL": 0, "SPECIES": "Unknown", "MOTION": "Running <-->", "Q": -1, "N": -1, "COMMENT": "" }, { "FILE": 1, "TOTAL": 2, "FRAME_NUM": 35, "DIR": " N/A", "R": 13.206211097755432, "THETA": -9.1195, "L": 73.33, "DR": -1, "LDR": -1, "ASPECT": -1, "TIME": "11:54:44", "DATE": "2018-07-09", "LATITUDE": "N 00 d 0.00000 m", "LONGITUDE": "E 000 d 0.00000 m", "PAN": None, "TILT": None, "ROLL": 0, "SPECIES": "Unknown", "MOTION": "Running <-->", "Q": -1, "N": -1, "COMMENT": "" }, { "FILE": 1, "TOTAL": 3, "FRAME_NUM": 122, "DIR": " N/A", "R": 13.219339643409729, "THETA": -9.3961, "L": 84.77, "DR": -1, "LDR": -1, "ASPECT": -1, "TIME": "11:54:58", "DATE": "2018-07-09", "LATITUDE": "N 00 d 0.00000 m", "LONGITUDE": "E 000 d 0.00000 m", "PAN": None, "TILT": None, "ROLL": 0, "SPECIES": "Unknown", "MOTION": "Running <-->", "Q": -1, "N": -1, "COMMENT": "" }, { "FILE": 1, "TOTAL": 4, "FRAME_NUM": 123, "DIR": "N/A", "R": 12.996154367286682, "THETA": 10.7991, "L": 59.919999999999995, "DR": -1, "LDR": -1, "ASPECT": -1, "TIME": "11:54:58", "DATE": "2018-07-09", "LATITUDE": "N 00 d 0.00000 m", "LONGITUDE": "E 000 d 0.00000 m", "PAN": None, "TILT": None, "ROLL": 0, "SPECIES": "Unknown", "MOTION": "Running <-->", "Q": -1, "N": -1, "COMMENT": "" }, { "FILE": 1, "TOTAL": 5, "FRAME_NUM": 130, "DIR": " N/A", "R": 12.484141086769105, "THETA": -8.2654, "L": 70.89999999999999, "DR": -1, "LDR": -1, "ASPECT": -1, "TIME": "11:54:59", "DATE": "2018-07-09", "LATITUDE": "N 00 d 0.00000 m", "LONGITUDE": "E 000 d 0.00000 m", "PAN": None, "TILT": None, "ROLL": 0, "SPECIES": "Unknown", "MOTION": "Running <-->", "Q": -1, "N": -1, "COMMENT": "" }, { "FILE": 1, "TOTAL": 6, "FRAME_NUM": 218, "DIR": " N/A", "R": 13.232468189064026, "THETA": -9.3961, "L": 77.25999999999999, "DR": -1, "LDR": -1, "ASPECT": -1, "TIME": "11:55:12", "DATE": "2018-07-09", "LATITUDE": "N 00 d 0.00000 m", "LONGITUDE": "E 000 d 0.00000 m", "PAN": None, "TILT": None, "ROLL": 0, "SPECIES": "Unknown", "MOTION": "Running <-->", "Q": -1, "N": -1, "COMMENT": "" }, { "FILE": 1, "TOTAL": 7, "FRAME_NUM": 278, "DIR": " N/A", "R": 13.967666745704651, "THETA": -12.8758, "L": 37.51, "DR": -1, "LDR": -1, "ASPECT": -1, "TIME": "11:55:22", "DATE": "2018-07-09", "LATITUDE": "N 00 d 0.00000 m", "LONGITUDE": "E 000 d 0.00000 m", "PAN": None, "TILT": None, "ROLL": 0, "SPECIES": "Unknown", "MOTION": "Running <-->", "Q": -1, "N": -1, "COMMENT": "" }, { "FILE": 1, "TOTAL": 8, "FRAME_NUM": 302, "DIR": " N/A", "R": 13.25872528037262, "THETA": -9.1195, "L": 79.5, "DR": -1, "LDR": -1, "ASPECT": -1, "TIME": "11:55:25", "DATE": "2018-07-09", "LATITUDE": "N 00 d 0.00000 m", "LONGITUDE": "E 000 d 0.00000 m", "PAN": None, "TILT": None, "ROLL": 0, "SPECIES": "Unknown", "MOTION": "Running <-->", "Q": -1, "N": -1, "COMMENT": "" }, { "FILE": 1, "TOTAL": 9, "FRAME_NUM": 331, "DIR": " N/A", "R": 13.25872528037262, "THETA": -9.1195, "L": 80.67, "DR": -1, "LDR": -1, "ASPECT": -1, "TIME": "11:55:30", "DATE": "2018-07-09", "LATITUDE": "N 00 d 0.00000 m", "LONGITUDE": "E 000 d 0.00000 m", "PAN": None, "TILT": None, "ROLL": 0, "SPECIES": "Unknown", "MOTION": "Running <-->", "Q": -1, "N": -1, "COMMENT": "" }, { "FILE": 1, "TOTAL": 10, "FRAME_NUM": 450, "DIR": " N/A", "R": 13.324368008644104, "THETA": -8.5535, "L": 83.1, "DR": -1, "LDR": -1, "ASPECT": -1, "TIME": "11:55:48", "DATE": "2018-07-09", "LATITUDE": "N 00 d 0.00000 m", "LONGITUDE": "E 000 d 0.00000 m", "PAN": None, "TILT": None, "ROLL": 0, "SPECIES": "Unknown", "MOTION": "Running <-->", "Q": -1, "N": -1, "COMMENT": "" }, { "FILE": 1, "TOTAL": 11, "FRAME_NUM": 495, "DIR": " N/A", "R": 13.481910556495666, "THETA": -9.1195, "L": 86.39, "DR": -1, "LDR": -1, "ASPECT": -1, "TIME": "11:55:55", "DATE": "2018-07-09", "LATITUDE": "N 00 d 0.00000 m", "LONGITUDE": "E 000 d 0.00000 m", "PAN": None, "TILT": None, "ROLL": 0, "SPECIES": "Unknown", "MOTION": "Running <-->", "Q": -1, "N": -1, "COMMENT": "" }, { "FILE": 1, "TOTAL": 12, "FRAME_NUM": 526, "DIR": " N/A", "R": 13.04866854990387, "THETA": 10.5397, "L": 55.37, "DR": -1, "LDR": -1, "ASPECT": -1, "TIME": "11:56:00", "DATE": "2018-07-09", "LATITUDE": "N 00 d 0.00000 m", "LONGITUDE": "E 000 d 0.00000 m", "PAN": None, "TILT": None, "ROLL": 0, "SPECIES": "Unknown", "MOTION": "Running <-->", "Q": -1, "N": -1, "COMMENT": "" }, { "FILE": 1, "TOTAL": 13, "FRAME_NUM": 538, "DIR": " N/A", "R": 13.416267828224182, "THETA": -9.668, "L": 82.38, "DR": -1, "LDR": -1, "ASPECT": -1, "TIME": "11:56:02", "DATE": "2018-07-09", "LATITUDE": "N 00 d 0.00000 m", "LONGITUDE": "E 000 d 0.00000 m", "PAN": None, "TILT": None, "ROLL": 0, "SPECIES": "Unknown", "MOTION": "Running <-->", "Q": -1, "N": -1, "COMMENT": "" }, { "FILE": 1, "TOTAL": 14, "FRAME_NUM": 624, "DIR": " N/A", "R": 13.29811091733551, "THETA": -8.8385, "L": 77.44, "DR": -1, "LDR": -1, "ASPECT": -1, "TIME": "11:56:16", "DATE": "2018-07-09", "LATITUDE": "N 00 d 0.00000 m", "LONGITUDE": "E 000 d 0.00000 m", "PAN": None, "TILT": None, "ROLL": 0, "SPECIES": "Unknown", "MOTION": "Running <-->", "Q": -1, "N": -1, "COMMENT": "" } ], "DATE": "2018-07-09", "START": "11:54:39", "END": "11:56:18" } def load_example_result(result, table_headers, info_headers): fish_table, fish_info = create_metadata_table(example_metadata, table_headers, info_headers) result['path_zip'] = ["static/example/input_file_results.zip"] result['path_video'] = ["static/example/input_file_results.mp4"] result['path_json'] = ["static/example/input_file_results.json"] result['path_marking'] = ["static/example/input_file_marking.txt"] result['fish_table'] = [fish_table] result['fish_info'] = [fish_info] def reset_state(result, state): # Reset Result result["json_result"] = [] result["aris_input"] = [] result["path_video"] = [] result["path_zip"] = [] result["path_json"] = [] result["path_marking"] = [] result["fish_table"] = [] result["fish_info"] = [] # Reset State state['files'] = [] state['index'] = 0 state['total'] = 0 def convert_json_to_vatic(json_path, vatic_path="static/example/input_file_vatic.xml"): xml = '\n'; xml += '\n'; xml += ' not available\n'; xml += ' not available\n'; xml += ' \n'; xml += ' video\n'; xml += ' vatic frames\n'; xml += ' vatic\n'; xml += ' \n'; with open(json_path, 'r') as f: annotation = json.loads(f.read()) frames = annotation['frames'] nbr_frames = len(frames) fishes = {} for frame in annotation['frames']: frame_nbr = str(frame['frame_num']) for fish in frame['fish']: track_id = fish['fish_id'] if (not track_id in fishes): fishes[track_id] = {'id': track_id, 'frames': []} fishes[track_id]['frames'].append({ 'frame': frame_nbr, 'x_min': str(round(fish['bbox'][0]*522)), 'y_min': str(round(fish['bbox'][1]*700)), 'x_max': str(round(fish['bbox'][2]*522)), 'y_max': str(round(fish['bbox'][3]*700)), 'visible': str(fish['visible']), 'truth': "1" }) for fish_id in fishes: fish = fishes[fish_id] xml += ' \n'; xml += ' fish\n'; xml += ' true\n'; xml += ' \n'; xml += ' 0\n'; xml += ' ' + str(fish['id']) + '\n'; xml += ' 0\n'; xml += ' 0\n'; xml += ' ' + str(nbr_frames - 1 ) + '\n'; for frame in fish['frames']: xml += ' '; xml += ''; xml += '' + str(frame['frame']) + ''; xml += '' + frame['x_min'] + '' + frame['y_min'] + '' + frame['truth'] + ''; xml += '' + frame['x_min'] + '' + frame['y_max'] + '' + frame['truth'] + ''; xml += '' + frame['x_max'] + '' + frame['y_max'] + '' + frame['truth'] + ''; xml += '' + frame['x_max'] + '' + frame['y_min'] + '' + frame['truth'] + ''; xml += '\n'; xml += ' \n'; xml += '\n'; if vatic_path: with open(vatic_path, 'w') as f: f.write(xml) return xml convert_json_to_vatic("static/example/input_file_results.json")