fisheye-experimental / state_handler.py
oskarastrom's picture
Video codec testing
c780404
raw
history blame
No virus
13.8 kB
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 = '<?xml version="1.0" encoding="utf-8"?>\n';
xml += '<annotation>\n';
xml += ' <folder>not available</folder>\n';
xml += ' <filename>not available</filename>\n';
xml += ' <source>\n';
xml += ' <type>video</type>\n';
xml += ' <sourceImage>vatic frames</sourceImage>\n';
xml += ' <sourceAnnotation>vatic</sourceAnnotation>\n';
xml += ' </source>\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 += ' <object>\n';
xml += ' <name>fish</name>\n';
xml += ' <moving>true</moving>\n';
xml += ' <action/>\n';
xml += ' <verified>0</verified>\n';
xml += ' <id>' + str(fish['id']) + '</id>\n';
xml += ' <createdFrame>0</createdFrame>\n';
xml += ' <startFrame>0</startFrame>\n';
xml += ' <endFrame>' + str(nbr_frames - 1 ) + '</endFrame>\n';
for frame in fish['frames']:
xml += ' ';
xml += '<polygon>';
xml += '<t>' + str(frame['frame']) + '</t>';
xml += '<pt><x>' + frame['x_min'] + '</x><y>' + frame['y_min'] + '</y><l>' + frame['truth'] + '</l></pt>';
xml += '<pt><x>' + frame['x_min'] + '</x><y>' + frame['y_max'] + '</y><l>' + frame['truth'] + '</l></pt>';
xml += '<pt><x>' + frame['x_max'] + '</x><y>' + frame['y_max'] + '</y><l>' + frame['truth'] + '</l></pt>';
xml += '<pt><x>' + frame['x_max'] + '</x><y>' + frame['y_min'] + '</y><l>' + frame['truth'] + '</l></pt>';
xml += '</polygon>\n';
xml += ' </object>\n';
xml += '</annotation>\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")