visionml/pytracking

Nfs数据集的注释文件用不了?

cnchange opened this issue · 5 comments

Nfs的注释文件和pytracking里面的数据集处理脚本对应不上,为此,我们制作了一个脚本,可以将注释文件转换为(x,y,w,h)的格式。

sequence_info_list = [
{"name": "Gymnastics", "path": "30/Gymnastics", "startFrame": 1, "endFrame": 368, "nz": 5, "ext": "jpg", "anno_path": "30/Gymnastics.txt", "object_class": "person", 'occlusion': False},
{"name": "MachLoop_jet", "path": "30/MachLoop_jet", "startFrame": 1, "endFrame": 99, "nz": 5, "ext": "jpg", "anno_path": "30/MachLoop_jet.txt", "object_class": "aircraft", 'occlusion': False},
{"name": "Skiing_red", "path": "30/Skiing_red", "startFrame": 1, "endFrame": 69, "nz": 5, "ext": "jpg", "anno_path": "30/Skiing_red.txt", "object_class": "person", 'occlusion': False},
{"name": "Skydiving", "path": "30/Skydiving", "startFrame": 1, "endFrame": 196, "nz": 5, "ext": "jpg", "anno_path": "30/Skydiving.txt", "object_class": "person", 'occlusion': True},
{"name": "airboard_1", "path": "30/airboard_1", "startFrame": 1, "endFrame": 425, "nz": 5, "ext": "jpg", "anno_path": "30/airboard_1.txt", "object_class": "ball", 'occlusion': False},
{"name": "airplane_landing", "path": "30/airplane_landing", "startFrame": 1, "endFrame": 81, "nz": 5, "ext": "jpg", "anno_path": "30/airplane_landing.txt", "object_class": "aircraft", 'occlusion': False},
{"name": "airtable_3", "path": "30/airtable_3", "startFrame": 1, "endFrame": 482, "nz": 5, "ext": "jpg", "anno_path": "30/airtable_3.txt", "object_class": "ball", 'occlusion': False},
{"name": "basketball_1", "path": "30/basketball_1", "startFrame": 1, "endFrame": 282, "nz": 5, "ext": "jpg", "anno_path": "30/basketball_1.txt", "object_class": "ball", 'occlusion': False},
{"name": "basketball_2", "path": "30/basketball_2", "startFrame": 1, "endFrame": 102, "nz": 5, "ext": "jpg", "anno_path": "30/basketball_2.txt", "object_class": "ball", 'occlusion': False},
{"name": "basketball_3", "path": "30/basketball_3", "startFrame": 1, "endFrame": 421, "nz": 5, "ext": "jpg", "anno_path": "30/basketball_3.txt", "object_class": "ball", 'occlusion': False},
{"name": "basketball_6", "path": "30/basketball_6", "startFrame": 1, "endFrame": 224, "nz": 5, "ext": "jpg", "anno_path": "30/basketball_6.txt", "object_class": "ball", 'occlusion': False},
{"name": "basketball_7", "path": "30/basketball_7", "startFrame": 1, "endFrame": 240, "nz": 5, "ext": "jpg", "anno_path": "30/basketball_7.txt", "object_class": "person", 'occlusion': True},
{"name": "basketball_player", "path": "30/basketball_player", "startFrame": 1, "endFrame": 369, "nz": 5, "ext": "jpg", "anno_path": "30/basketball_player.txt", "object_class": "person", 'occlusion': True},
{"name": "basketball_player_2", "path": "30/basketball_player_2", "startFrame": 1, "endFrame": 437, "nz": 5, "ext": "jpg", "anno_path": "30/basketball_player_2.txt", "object_class": "person", 'occlusion': False},
{"name": "beach_flipback_person", "path": "30/beach_flipback_person", "startFrame": 1, "endFrame": 61, "nz": 5, "ext": "jpg", "anno_path": "30/beach_flipback_person.txt", "object_class": "person head", 'occlusion': False},
{"name": "bee", "path": "30/bee", "startFrame": 1, "endFrame": 45, "nz": 5, "ext": "jpg", "anno_path": "30/bee.txt", "object_class": "insect", 'occlusion': False},
{"name": "biker_acrobat", "path": "30/biker_acrobat", "startFrame": 1, "endFrame": 128, "nz": 5, "ext": "jpg", "anno_path": "30/biker_acrobat.txt", "object_class": "bicycle", 'occlusion': False},
{"name": "biker_all_1", "path": "30/biker_all_1", "startFrame": 1, "endFrame": 113, "nz": 5, "ext": "jpg", "anno_path": "30/biker_all_1.txt", "object_class": "person", 'occlusion': False},
{"name": "biker_head_2", "path": "30/biker_head_2", "startFrame": 1, "endFrame": 132, "nz": 5, "ext": "jpg", "anno_path": "30/biker_head_2.txt", "object_class": "person head", 'occlusion': False},
{"name": "biker_head_3", "path": "30/biker_head_3", "startFrame": 1, "endFrame": 254, "nz": 5, "ext": "jpg", "anno_path": "30/biker_head_3.txt", "object_class": "person head", 'occlusion': False},
{"name": "biker_upper_body", "path": "30/biker_upper_body", "startFrame": 1, "endFrame": 194, "nz": 5, "ext": "jpg", "anno_path": "30/biker_upper_body.txt", "object_class": "person", 'occlusion': False},
{"name": "biker_whole_body", "path": "30/biker_whole_body", "startFrame": 1, "endFrame": 572, "nz": 5, "ext": "jpg", "anno_path": "30/biker_whole_body.txt", "object_class": "person", 'occlusion': True},
{"name": "billiard_2", "path": "30/billiard_2", "startFrame": 1, "endFrame": 604, "nz": 5, "ext": "jpg", "anno_path": "30/billiard_2.txt", "object_class": "ball", 'occlusion': False},
{"name": "billiard_3", "path": "30/billiard_3", "startFrame": 1, "endFrame": 698, "nz": 5, "ext": "jpg", "anno_path": "30/billiard_3.txt", "object_class": "ball", 'occlusion': False},
{"name": "billiard_6", "path": "30/billiard_6", "startFrame": 1, "endFrame": 771, "nz": 5, "ext": "jpg", "anno_path": "30/billiard_6.txt", "object_class": "ball", 'occlusion': False},
{"name": "billiard_7", "path": "30/billiard_7", "startFrame": 1, "endFrame": 724, "nz": 5, "ext": "jpg", "anno_path": "30/billiard_7.txt", "object_class": "ball", 'occlusion': False},
{"name": "billiard_8", "path": "30/billiard_8", "startFrame": 1, "endFrame": 778, "nz": 5, "ext": "jpg", "anno_path": "30/billiard_8.txt", "object_class": "ball", 'occlusion': False},
{"name": "bird_2", "path": "30/bird_2", "startFrame": 1, "endFrame": 476, "nz": 5, "ext": "jpg", "anno_path": "30/bird_2.txt", "object_class": "bird", 'occlusion': False},
{"name": "book", "path": "30/book", "startFrame": 1, "endFrame": 288, "nz": 5, "ext": "jpg", "anno_path": "30/book.txt", "object_class": "other", 'occlusion': False},
{"name": "bottle", "path": "30/bottle", "startFrame": 1, "endFrame": 2103, "nz": 5, "ext": "jpg", "anno_path": "30/bottle.txt", "object_class": "other", 'occlusion': False},
{"name": "bowling_1", "path": "30/bowling_1", "startFrame": 1, "endFrame": 303, "nz": 5, "ext": "jpg", "anno_path": "30/bowling_1.txt", "object_class": "ball", 'occlusion': True},
{"name": "bowling_2", "path": "30/bowling_2", "startFrame": 1, "endFrame": 710, "nz": 5, "ext": "jpg", "anno_path": "30/bowling_2.txt", "object_class": "ball", 'occlusion': True},
{"name": "bowling_3", "path": "30/bowling_3", "startFrame": 1, "endFrame": 271, "nz": 5, "ext": "jpg", "anno_path": "30/bowling_3.txt", "object_class": "ball", 'occlusion': True},
{"name": "bowling_6", "path": "30/bowling_6", "startFrame": 1, "endFrame": 260, "nz": 5, "ext": "jpg", "anno_path": "30/bowling_6.txt", "object_class": "ball", 'occlusion': False},
{"name": "bowling_ball", "path": "30/bowling_ball", "startFrame": 1, "endFrame": 275, "nz": 5, "ext": "jpg", "anno_path": "30/bowling_ball.txt", "object_class": "ball", 'occlusion': True},
{"name": "bunny", "path": "30/bunny", "startFrame": 1, "endFrame": 705, "nz": 5, "ext": "jpg", "anno_path": "30/bunny.txt", "object_class": "mammal", 'occlusion': False},
{"name": "car", "path": "30/car", "startFrame": 1, "endFrame": 2020, "nz": 5, "ext": "jpg", "anno_path": "30/car.txt", "object_class": "car", 'occlusion': True},
{"name": "car_camaro", "path": "30/car_camaro", "startFrame": 1, "endFrame": 36, "nz": 5, "ext": "jpg", "anno_path": "30/car_camaro.txt", "object_class": "car", 'occlusion': False},
{"name": "car_drifting", "path": "30/car_drifting", "startFrame": 1, "endFrame": 173, "nz": 5, "ext": "jpg", "anno_path": "30/car_drifting.txt", "object_class": "car", 'occlusion': False},
{"name": "car_jumping", "path": "30/car_jumping", "startFrame": 1, "endFrame": 22, "nz": 5, "ext": "jpg", "anno_path": "30/car_jumping.txt", "object_class": "car", 'occlusion': False},
{"name": "car_rc_rolling", "path": "30/car_rc_rolling", "startFrame": 1, "endFrame": 62, "nz": 5, "ext": "jpg", "anno_path": "30/car_rc_rolling.txt", "object_class": "car", 'occlusion': False},
{"name": "car_rc_rotating", "path": "30/car_rc_rotating", "startFrame": 1, "endFrame": 80, "nz": 5, "ext": "jpg", "anno_path": "30/car_rc_rotating.txt", "object_class": "car", 'occlusion': False},
{"name": "car_side", "path": "30/car_side", "startFrame": 1, "endFrame": 108, "nz": 5, "ext": "jpg", "anno_path": "30/car_side.txt", "object_class": "car", 'occlusion': False},
{"name": "car_white", "path": "30/car_white", "startFrame": 1, "endFrame": 2063, "nz": 5, "ext": "jpg", "anno_path": "30/car_white.txt", "object_class": "car", 'occlusion': False},
{"name": "cheetah", "path": "30/cheetah", "startFrame": 1, "endFrame": 167, "nz": 5, "ext": "jpg", "anno_path": "30/cheetah.txt", "object_class": "mammal", 'occlusion': True},
{"name": "cup", "path": "30/cup", "startFrame": 1, "endFrame": 1281, "nz": 5, "ext": "jpg", "anno_path": "30/cup.txt", "object_class": "other", 'occlusion': False},
{"name": "cup_2", "path": "30/cup_2", "startFrame": 1, "endFrame": 182, "nz": 5, "ext": "jpg", "anno_path": "30/cup_2.txt", "object_class": "other", 'occlusion': False},
{"name": "dog", "path": "30/dog", "startFrame": 1, "endFrame": 1030, "nz": 5, "ext": "jpg", "anno_path": "30/dog.txt", "object_class": "dog", 'occlusion': True},
{"name": "dog_1", "path": "30/dog_1", "startFrame": 1, "endFrame": 168, "nz": 5, "ext": "jpg", "anno_path": "30/dog_1.txt", "object_class": "dog", 'occlusion': False},
{"name": "dog_2", "path": "30/dog_2", "startFrame": 1, "endFrame": 594, "nz": 5, "ext": "jpg", "anno_path": "30/dog_2.txt", "object_class": "dog", 'occlusion': True},
{"name": "dog_3", "path": "30/dog_3", "startFrame": 1, "endFrame": 200, "nz": 5, "ext": "jpg", "anno_path": "30/dog_3.txt", "object_class": "dog", 'occlusion': False},
{"name": "dogs", "path": "30/dogs", "startFrame": 1, "endFrame": 198, "nz": 5, "ext": "jpg", "anno_path": "30/dogs.txt", "object_class": "dog", 'occlusion': True},
{"name": "dollar", "path": "30/dollar", "startFrame": 1, "endFrame": 1426, "nz": 5, "ext": "jpg", "anno_path": "30/dollar.txt", "object_class": "other", 'occlusion': False},
{"name": "drone", "path": "30/drone", "startFrame": 1, "endFrame": 70, "nz": 5, "ext": "jpg", "anno_path": "30/drone.txt", "object_class": "aircraft", 'occlusion': False},
{"name": "ducks_lake", "path": "30/ducks_lake", "startFrame": 1, "endFrame": 107, "nz": 5, "ext": "jpg", "anno_path": "30/ducks_lake.txt", "object_class": "bird", 'occlusion': False},
{"name": "exit", "path": "30/exit", "startFrame": 1, "endFrame": 359, "nz": 5, "ext": "jpg", "anno_path": "30/exit.txt", "object_class": "other", 'occlusion': False},
{"name": "first", "path": "30/first", "startFrame": 1, "endFrame": 435, "nz": 5, "ext": "jpg", "anno_path": "30/first.txt", "object_class": "other", 'occlusion': False},
{"name": "flower", "path": "30/flower", "startFrame": 1, "endFrame": 448, "nz": 5, "ext": "jpg", "anno_path": "30/flower.txt", "object_class": "other", 'occlusion': False},
{"name": "footbal_skill", "path": "30/footbal_skill", "startFrame": 1, "endFrame": 131, "nz": 5, "ext": "jpg", "anno_path": "30/footbal_skill.txt", "object_class": "ball", 'occlusion': True},
{"name": "helicopter", "path": "30/helicopter", "startFrame": 1, "endFrame": 310, "nz": 5, "ext": "jpg", "anno_path": "30/helicopter.txt", "object_class": "aircraft", 'occlusion': False},
{"name": "horse_jumping", "path": "30/horse_jumping", "startFrame": 1, "endFrame": 117, "nz": 5, "ext": "jpg", "anno_path": "30/horse_jumping.txt", "object_class": "horse", 'occlusion': True},
{"name": "horse_running", "path": "30/horse_running", "startFrame": 1, "endFrame": 139, "nz": 5, "ext": "jpg", "anno_path": "30/horse_running.txt", "object_class": "horse", 'occlusion': False},
{"name": "iceskating_6", "path": "30/iceskating_6", "startFrame": 1, "endFrame": 603, "nz": 5, "ext": "jpg", "anno_path": "30/iceskating_6.txt", "object_class": "person", 'occlusion': False},
{"name": "jellyfish_5", "path": "30/jellyfish_5", "startFrame": 1, "endFrame": 746, "nz": 5, "ext": "jpg", "anno_path": "30/jellyfish_5.txt", "object_class": "invertebrate", 'occlusion': False},
{"name": "kid_swing", "path": "30/kid_swing", "startFrame": 1, "endFrame": 169, "nz": 5, "ext": "jpg", "anno_path": "30/kid_swing.txt", "object_class": "person", 'occlusion': False},
{"name": "motorcross", "path": "30/motorcross", "startFrame": 1, "endFrame": 39, "nz": 5, "ext": "jpg", "anno_path": "30/motorcross.txt", "object_class": "vehicle", 'occlusion': True},
{"name": "motorcross_kawasaki", "path": "30/motorcross_kawasaki", "startFrame": 1, "endFrame": 65, "nz": 5, "ext": "jpg", "anno_path": "30/motorcross_kawasaki.txt", "object_class": "vehicle", 'occlusion': False},
{"name": "parkour", "path": "30/parkour", "startFrame": 1, "endFrame": 58, "nz": 5, "ext": "jpg", "anno_path": "30/parkour.txt", "object_class": "person head", 'occlusion': False},
{"name": "person_scooter", "path": "30/person_scooter", "startFrame": 1, "endFrame": 413, "nz": 5, "ext": "jpg", "anno_path": "30/person_scooter.txt", "object_class": "person", 'occlusion': True},
{"name": "pingpong_2", "path": "30/pingpong_2", "startFrame": 1, "endFrame": 1277, "nz": 5, "ext": "jpg", "anno_path": "30/pingpong_2.txt", "object_class": "ball", 'occlusion': False},
{"name": "pingpong_7", "path": "30/pingpong_7", "startFrame": 1, "endFrame": 1290, "nz": 5, "ext": "jpg", "anno_path": "30/pingpong_7.txt", "object_class": "ball", 'occlusion': False},
{"name": "pingpong_8", "path": "30/pingpong_8", "startFrame": 1, "endFrame": 296, "nz": 5, "ext": "jpg", "anno_path": "30/pingpong_8.txt", "object_class": "ball", 'occlusion': False},
{"name": "purse", "path": "30/purse", "startFrame": 1, "endFrame": 968, "nz": 5, "ext": "jpg", "anno_path": "30/purse.txt", "object_class": "other", 'occlusion': False},
{"name": "rubber", "path": "30/rubber", "startFrame": 1, "endFrame": 1328, "nz": 5, "ext": "jpg", "anno_path": "30/rubber.txt", "object_class": "other", 'occlusion': False},
{"name": "running", "path": "30/running", "startFrame": 1, "endFrame": 677, "nz": 5, "ext": "jpg", "anno_path": "30/running.txt", "object_class": "person", 'occlusion': False},
{"name": "running_100_m", "path": "30/running_100_m", "startFrame": 1, "endFrame": 313, "nz": 5, "ext": "jpg", "anno_path": "30/running_100_m.txt", "object_class": "person", 'occlusion': True},
{"name": "running_100_m_2", "path": "30/running_100_m_2", "startFrame": 1, "endFrame": 337, "nz": 5, "ext": "jpg", "anno_path": "30/running_100_m_2.txt", "object_class": "person", 'occlusion': True},
{"name": "running_2", "path": "30/running_2", "startFrame": 1, "endFrame": 363, "nz": 5, "ext": "jpg", "anno_path": "30/running_2.txt", "object_class": "person", 'occlusion': False},
{"name": "shuffleboard_1", "path": "30/shuffleboard_1", "startFrame": 1, "endFrame": 42, "nz": 5, "ext": "jpg", "anno_path": "30/shuffleboard_1.txt", "object_class": "other", 'occlusion': False},
{"name": "shuffleboard_2", "path": "30/shuffleboard_2", "startFrame": 1, "endFrame": 41, "nz": 5, "ext": "jpg", "anno_path": "30/shuffleboard_2.txt", "object_class": "other", 'occlusion': False},
{"name": "shuffleboard_4", "path": "30/shuffleboard_4", "startFrame": 1, "endFrame": 62, "nz": 5, "ext": "jpg", "anno_path": "30/shuffleboard_4.txt", "object_class": "other", 'occlusion': False},
{"name": "shuffleboard_5", "path": "30/shuffleboard_5", "startFrame": 1, "endFrame": 32, "nz": 5, "ext": "jpg", "anno_path": "30/shuffleboard_5.txt", "object_class": "other", 'occlusion': False},
{"name": "shuffleboard_6", "path": "30/shuffleboard_6", "startFrame": 1, "endFrame": 52, "nz": 5, "ext": "jpg", "anno_path": "30/shuffleboard_6.txt", "object_class": "other", 'occlusion': False},
{"name": "shuffletable_2", "path": "30/shuffletable_2", "startFrame": 1, "endFrame": 372, "nz": 5, "ext": "jpg", "anno_path": "30/shuffletable_2.txt", "object_class": "other", 'occlusion': False},
{"name": "shuffletable_3", "path": "30/shuffletable_3", "startFrame": 1, "endFrame": 368, "nz": 5, "ext": "jpg", "anno_path": "30/shuffletable_3.txt", "object_class": "other", 'occlusion': False},
{"name": "shuffletable_4", "path": "30/shuffletable_4", "startFrame": 1, "endFrame": 101, "nz": 5, "ext": "jpg", "anno_path": "30/shuffletable_4.txt", "object_class": "other", 'occlusion': False},
{"name": "ski_long", "path": "30/ski_long", "startFrame": 1, "endFrame": 274, "nz": 5, "ext": "jpg", "anno_path": "30/ski_long.txt", "object_class": "person", 'occlusion': False},
{"name": "soccer_ball", "path": "30/soccer_ball", "startFrame": 1, "endFrame": 163, "nz": 5, "ext": "jpg", "anno_path": "30/soccer_ball.txt", "object_class": "ball", 'occlusion': False},
{"name": "soccer_ball_2", "path": "30/soccer_ball_2", "startFrame": 1, "endFrame": 1934, "nz": 5, "ext": "jpg", "anno_path": "30/soccer_ball_2.txt", "object_class": "ball", 'occlusion': False},
{"name": "soccer_ball_3", "path": "30/soccer_ball_3", "startFrame": 1, "endFrame": 1381, "nz": 5, "ext": "jpg", "anno_path": "30/soccer_ball_3.txt", "object_class": "ball", 'occlusion': False},
{"name": "soccer_player_2", "path": "30/soccer_player_2", "startFrame": 1, "endFrame": 475, "nz": 5, "ext": "jpg", "anno_path": "30/soccer_player_2.txt", "object_class": "person", 'occlusion': False},
{"name": "soccer_player_3", "path": "30/soccer_player_3", "startFrame": 1, "endFrame": 319, "nz": 5, "ext": "jpg", "anno_path": "30/soccer_player_3.txt", "object_class": "person", 'occlusion': True},
{"name": "stop_sign", "path": "30/stop_sign", "startFrame": 1, "endFrame": 302, "nz": 5, "ext": "jpg", "anno_path": "30/stop_sign.txt", "object_class": "other", 'occlusion': False},
{"name": "suv", "path": "30/suv", "startFrame": 1, "endFrame": 2584, "nz": 5, "ext": "jpg", "anno_path": "30/suv.txt", "object_class": "car", 'occlusion': False},
{"name": "tiger", "path": "30/tiger", "startFrame": 1, "endFrame": 1556, "nz": 5, "ext": "jpg", "anno_path": "30/tiger.txt", "object_class": "mammal", 'occlusion': False},
{"name": "walking", "path": "30/walking", "startFrame": 1, "endFrame": 555, "nz": 5, "ext": "jpg", "anno_path": "30/walking.txt", "object_class": "person", 'occlusion': False},
{"name": "walking_3", "path": "30/walking_3", "startFrame": 1, "endFrame": 1427, "nz": 5, "ext": "jpg", "anno_path": "30/walking_3.txt", "object_class": "person", 'occlusion': False},
{"name": "water_ski_2", "path": "30/water_ski_2", "startFrame": 1, "endFrame": 47, "nz": 5, "ext": "jpg", "anno_path": "30/water_ski_2.txt", "object_class": "person", 'occlusion': False},
{"name": "yoyo", "path": "30/yoyo", "startFrame": 1, "endFrame": 67, "nz": 5, "ext": "jpg", "anno_path": "30/yoyo.txt", "object_class": "other", 'occlusion': False},
{"name": "zebra_fish", "path": "30/zebra_fish", "startFrame": 1, "endFrame": 671, "nz": 5, "ext": "jpg", "anno_path": "30/zebra_fish.txt", "object_class": "fish", 'occlusion': False},
]

not_find = ['airboard_1',
'airplane_landing',
'airtable_3',
'basketball_1',
'basketball_2',
'basketball_3',
'basketball_6',
'purse',
]

def read_and_write(base_path, name):
# 打开文本文件
if name in not_find:
path_for_read = base_path + '/' + name + '/' + name + '/' + '30' + '/' + name + '.txt'
path_for_write = base_path + '/' + name + '/' + name + '/' + '30' + '/' + name + '_gt.txt'
else:
path_for_read = base_path + '/' + name + '/' + '30' + '/' + name + '.txt'
path_for_write = base_path + '/' + name + '/' + '30' + '/' + name + '_gt.txt'
with open(path_for_read, 'r') as file:
file_w = open(path_for_write, 'w')

    while True:
        line = file.readline().split()

        if line == []:
            break

        x1 = int(line[1])
        y1 = int(line[2])
        x2 = int(line[3]) + 1
        y2 = int(line[4]) + 1
        w = x2 - x1
        h = y2 - y1

        file_w.write(str(x1) + ',')
        file_w.write(str(y1) + ',')
        file_w.write(str(w) + ',')
        file_w.write(str(h)+ '\n')


file_w.close()

def main():
base_path = '/media/cz/DATA/Datasets/Nfs' # your Nfs datasets path
for s in sequence_info_list:
name = s['name']
read_and_write(base_path, name)

if name == 'main':
main()

@cnchange Thanks alot. This script helps me alot.

您好,想知道NFS 30fps的数据集annotation在哪里可以获取呢?官网获取的annotation都是240fps的

您好,想知道NFS 30fps的数据集annotation在哪里可以获取呢?官网获取的annotation都是240fps的

据我观察,帧率30fps的视频是从帧率240fps的视频里按照间隔8帧采样的,那么,我们同样可以用python脚本对240fps的注释文件进行采样,这样就可以得到30fps的注释了。我已经将采样后的注释文件可视化过了,这个方法是可行的!希望能帮到你。