OTB数据集批量设置代码——设置configSeq.m并复制groundtruth文件

该博客介绍了如何使用Matlab自动处理OTB2015数据集,包括自动生成configSeq.m配置代码并存入txt文件,以及自动将groundtruth文件复制到anno文件夹并重命名,大大提高了工作效率。
摘要由CSDN通过智能技术生成

在这里插入图片描述

(1)configSeq.m代码自动编写

OTB数据集Benchmark中的数据集设置十分繁琐,OTB2015中有100个视频序列,如果手动添加每个视频序列的属性效率极低,因此本文通过Matlab代码实现自动获取数据集每个视频序列的属性,按照configSeq中的结构体样式编写属性代码并存入txt文件中,随后将代码复制进configSeq中即可。

(2)自动将原数据集中的groundtruth文件复制进anno文件夹中并重命名

由于Benchmark在测试算法之后要根据groundtruth文件计算跟踪精度等指标,需要将数据集中的gd文件复制进Benchmark中的anno文件夹,如果手动操作会变得十分繁琐,本代码可以实现自动获取原数据集文件夹中的groundtruth文件并复制进Benchmark中的anno文件夹,并重命名为Benchmark的格式。

%此代码实现的功能为:
%读取数据集文件下的所有子文件夹名称,并以configSeqs.m中的格式创建结构体
%并将groundtruth文件存入anno文件夹
OTB100 = 'Basketball Biker Bird1 Bird2 BlurBody BlurCar1 BlurCar2 BlurCar3 BlurCar4 BlurFace BlurOwl Board Bolt Bolt2 Box Boy Car1 Car2 Car24 Car4 CarDark CarScale ClifBar Coke Couple Coupon Crossing Crowds Dancer Dancer2 David David2 David3 Deer Diving Dog Dog1 Doll DragonBaby Dudek FaceOcc1 FaceOcc2 Fish FleetFace Football Football1 Freeman1 Freeman3 Freeman4 Girl Girl2 Gym Human2 Human3 Human4 Human5 Human6 Human7 Human8 Human9 Ironman Jogging Jump Jumping KiteSurf Lemming Liquor Man Matrix Mhyang MotorRolling MountainBike Panda RedTeam Rubik Shaking Singer1 Singer2 Skater Skater2 Skating1 Skating2 Skiing Soccer Subway Surfer Suv Sylvester Tiger1 Tiger2 Toy Trans Trellis Twinnings Vase Walking Walking2 Woman';
OTB100 = strsplit(OTB100);
base_path = 'E:\single_object_tracking\Benchmark\';
files = dir(base_path);%数据集文件夹的路径

%% 处理configSeq
fid=fopen('configSeq.txt','wt');
for i = 1:numel(files)
    temp_name = files(i).name;
    if ~ismember(temp_name,OTB100) %如果文件夹的名字不存在于OTB数据集中,则执行下一循环
        continue
    end
    temp_path = [base_path temp_name '\' 'img\'];
    temp_files = dir([temp_path '*.jpg']);
    endFrame = numel(temp_files);
    temp_1 = ['struct(''name'',' '''' temp_name '''' ',' '''path'','];%字符串中有单引号用两个单引号表示
    temp_res = [temp_1 '''' temp_path '''' ',' '''startFrame'',' '1,' '''endFrame'',' num2str(endFrame) ',' '''nz'',' '4,' '''ext'',' '''jpg'',' '''init_rect'', ' '[0,0,0,0]),' '...'];
    fprintf(fid,'%s\n',temp_res);%写入文本文件
    disp(['write down:' temp_name])
    
end
disp('configSeq done')

%% 处理groundtruth文件
for i = 1:numel(files)
    temp_name = files(i).name;
    
    if ~ismember(temp_name,OTB100) %如果文件夹的名字不存在于OTB数据集中,则执行下一循环
        continue
    end
    
    txt_name = ['./anno/' temp_name '.txt'];
    if exist(txt_name,'file') %如果原本存在groundtruth文件则执行下一个循环
        disp(['exsting txt file : ' temp_name])
        continue
    end
    gd_file = [base_path temp_name '/' 'groundtruth_rect.txt'];%数据集中的gd文件
    copyfile(gd_file,'./anno');%移动到anno文件夹
    path = pwd;%保存当前目录
    cd('./anno')
    eval(['!rename' 32 'groundtruth_rect.txt' 32 [temp_name '.txt']]); %使用系统命令更改文件名,32为ASCII空格
    cd(path)%返回目录
    disp(['move done: ' temp_name])
end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhengky6

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值