|
import json |
|
import os |
|
import re |
|
import numpy as np |
|
import cv2 |
|
|
|
from glob import glob |
|
from fire import Fire |
|
|
|
def process(dataset_name): |
|
with open(os.path.join(dataset_name, 'list.txt'), 'r') as f: |
|
lines = f.readlines() |
|
videos = [x.strip() for x in lines] |
|
|
|
|
|
meta_data = {} |
|
tags = [] |
|
for video in videos: |
|
with open(os.path.join(dataset_name, video, "groundtruth.txt"),'r') as f: |
|
gt_traj = [list(map(float, x.strip().split(','))) for x in f.readlines()] |
|
|
|
img_names = sorted(glob(os.path.join(dataset_name, video, 'color', '*.jpg'))) |
|
if len(img_names) == 0: |
|
img_names = sorted(glob(os.path.join(dataset_name, video, '*.jpg'))) |
|
im = cv2.imread(img_names[0]) |
|
img_names = [x.split('/', 1)[1] for x in img_names] |
|
|
|
if dataset_name in ['VOT2018', 'VOT2019']: |
|
tag_file = os.path.join(dataset_name, video, 'camera_motion.tag') |
|
if os.path.exists(tag_file): |
|
with open(tag_file, 'r') as f: |
|
camera_motion = [int(x.strip()) for x in f.readlines()] |
|
camera_motion += [0] * (len(gt_traj) - len(camera_motion)) |
|
else: |
|
print("File not exists: ", tag_file) |
|
camera_motion = [] |
|
|
|
tag_file = os.path.join(dataset_name, video, 'illum_change.tag') |
|
if os.path.exists(tag_file): |
|
with open(tag_file, 'r') as f: |
|
illum_change = [int(x.strip()) for x in f.readlines()] |
|
illum_change += [0] * (len(gt_traj) - len(illum_change)) |
|
else: |
|
print("File not exists: ", tag_file) |
|
illum_change = [] |
|
|
|
tag_file = os.path.join(dataset_name, video, 'motion_change.tag') |
|
if os.path.exists(tag_file): |
|
with open(tag_file, 'r') as f: |
|
motion_change = [int(x.strip()) for x in f.readlines()] |
|
motion_change += [0] * (len(gt_traj) - len(motion_change)) |
|
else: |
|
print("File not exists: ", tag_file) |
|
motion_change = [] |
|
|
|
tag_file = os.path.join(dataset_name, video, 'size_change.tag') |
|
if os.path.exists(tag_file): |
|
with open(tag_file, 'r') as f: |
|
size_change = [int(x.strip()) for x in f.readlines()] |
|
size_change += [0] * (len(gt_traj) - len(size_change)) |
|
else: |
|
print("File not exists: ", tag_file) |
|
size_change = [] |
|
|
|
tag_file = os.path.join(dataset_name, video, 'occlusion.tag') |
|
if os.path.exists(tag_file): |
|
with open(tag_file, 'r') as f: |
|
occlusion = [int(x.strip()) for x in f.readlines()] |
|
occlusion += [0] * (len(gt_traj) - len(occlusion)) |
|
else: |
|
print("File not exists: ", tag_file) |
|
occlusion = [] |
|
img_files = os.path.join('VOT2019', ) |
|
meta_data[video] = {'video_dir': video, |
|
'init_rect': gt_traj[0], |
|
'img_names': img_names, |
|
'width': im.shape[1], |
|
'height': im.shape[0], |
|
'gt_rect': gt_traj, |
|
'camera_motion': camera_motion, |
|
'illum_change': illum_change, |
|
'motion_change': motion_change, |
|
'size_change': size_change, |
|
'occlusion': occlusion} |
|
elif 'VOT2016' == dataset_name: |
|
tag_file = os.path.join(dataset_name, video, 'camera_motion.label') |
|
if os.path.exists(tag_file): |
|
with open(tag_file, 'r') as f: |
|
camera_motion = [int(x.strip()) for x in f.readlines()] |
|
camera_motion += [0] * (len(gt_traj) - len(camera_motion)) |
|
else: |
|
print("File not exists: ", tag_file) |
|
camera_motion = [] |
|
|
|
tag_file = os.path.join(dataset_name, video, 'illum_change.label') |
|
if os.path.exists(tag_file): |
|
with open(tag_file, 'r') as f: |
|
illum_change = [int(x.strip()) for x in f.readlines()] |
|
illum_change += [0] * (len(gt_traj) - len(illum_change)) |
|
else: |
|
print("File not exists: ", tag_file) |
|
illum_change = [] |
|
|
|
tag_file = os.path.join(dataset_name, video, 'motion_change.label') |
|
if os.path.exists(tag_file): |
|
with open(tag_file, 'r') as f: |
|
motion_change = [int(x.strip()) for x in f.readlines()] |
|
motion_change += [0] * (len(gt_traj) - len(motion_change)) |
|
else: |
|
print("File not exists: ", tag_file) |
|
motion_change = [] |
|
|
|
tag_file = os.path.join(dataset_name, video, 'size_change.label') |
|
if os.path.exists(tag_file): |
|
with open(tag_file, 'r') as f: |
|
size_change = [int(x.strip()) for x in f.readlines()] |
|
size_change += [0] * (len(gt_traj) - len(size_change)) |
|
else: |
|
print("File not exists: ", tag_file) |
|
size_change = [] |
|
|
|
tag_file = os.path.join(dataset_name, video, 'occlusion.label') |
|
if os.path.exists(tag_file): |
|
with open(tag_file, 'r') as f: |
|
occlusion = [int(x.strip()) for x in f.readlines()] |
|
occlusion += [0] * (len(gt_traj) - len(occlusion)) |
|
else: |
|
print("File not exists: ", tag_file) |
|
occlusion = [] |
|
|
|
meta_data[video] = {'video_dir': video, |
|
'init_rect': gt_traj[0], |
|
'img_names': img_names, |
|
'gt_rect': gt_traj, |
|
'width': im.shape[1], |
|
'height': im.shape[0], |
|
'camera_motion': camera_motion, |
|
'illum_change': illum_change, |
|
'motion_change': motion_change, |
|
'size_change': size_change, |
|
'occlusion': occlusion} |
|
else: |
|
meta_data[video] = {'video_dir': video, |
|
'init_rect': gt_traj[0], |
|
'img_names': img_names, |
|
'gt_rect': gt_traj, |
|
'width': im.shape[1], |
|
'height': im.shape[0]} |
|
|
|
|
|
json.dump(meta_data, open(dataset_name+'.json', 'w')) |
|
|
|
if __name__ == '__main__': |
|
Fire(process) |
|
|
|
|