spp-net中的spp_demo中的代码详读:
dets = spp_detect(im, spp_model, spm_im_size, use_gpu);
classes = spp_model.classes;
boxes = cell(length(classes), 1);
thres = -0.5;
for i = 1:length(boxes)
I = dets{i}(:, 5) >= thres;
boxes{i} = dets{i}(I, :);
end
showboxes_new(im, boxes, classes);
看不明白其中cell的用法,用下面的数据尝试了一下:
>> a=cell(8)
初始化为一个8行8列的空cell类型数据a =
[] [] [] [] [] [] [] []
[] [] [] [] [] [] [] []
[] [] [] [] [] [] [] []
[] [] [] [] [] [] [] []
[] [] [] [] [] [] [] []
[] [] [] [] [] [] [] []
[] [] [] [] [] [] [] []
[] [] [] [] [] [] [] []
>> a{1}=rand(6)
a的1行1列的单元中存储的就是一个随机的6×6的方阵
a =
[6x6 double] [] [] [] [] [] [] []
[] [] [] [] [] [] [] []
[] [] [] [] [] [] [] []
[] [] [] [] [] [] [] []
[] [] [] [] [] [] [] []
[] [] [] [] [] [] [] []
[] [] [] [] [] [] [] []
[] [] [] [] [] [] [] []
>> a{1}
查看 a的1行1列的单元值
ans =
0.7577 0.0318 0.3171 0.7952 0.7547 0.4984
0.7431 0.2769 0.9502 0.1869 0.2760 0.9597
0.3922 0.0462 0.0344 0.4898 0.6797 0.3404
0.6555 0.0971 0.4387 0.4456 0.6551 0.5853
0.1712 0.8235 0.3816 0.6463 0.1626 0.2238
0.7060 0.6948 0.7655 0.7094 0.1190 0.7513
>> I = a{1}(:, 5) >= 0.5;
>> I
将a{1}中的第五列值大于等于0.5标记为1,否则标记为0,赋给变量I,I为一个6*1的向量
I =
1
0
1
1
0
0
>> boxes{1} = a{1}(I, :)
将I中为1的那一行向量给boxes{1},I中有三个1,所以就是3*6
boxes =
[3x6 double]
>> boxes{1}
ans =
0.7577 0.0318 0.3171 0.7952 0.7547 0.4984
0.3922 0.0462 0.0344 0.4898 0.6797 0.3404
0.6555 0.0971 0.4387 0.4456 0.6551 0.5853
>>