collectparts.m

来自「This code can parse any image in matlab.」· M 代码 · 共 36 行

M
36
字号
function D = collectParts(D,objectname,partnamelist,HOMELABELMAPS)
Nimage = length(D);
D = LHIreplaceobjectname(D,':',' : ','replace');
searchstr1 = ['-',strrep(partnamelist,' ','-')];
searchstr1 = strrep(searchstr1,',','-');
searchstr1 = strrep(searchstr1,['-',objectname],'');

searchstr2 = strrep(partnamelist,' ','+');
searchstr2 = strrep(searchstr2,',',['+',objectname,',']);
searchstr2 = [searchstr2,'+',objectname];
for i=1:Nimage,
   ind = LHIobjectindex(D(i).annotation, searchstr2,'word');
   for j=1:length(ind)
       jc = LHIobjectindex(D(i).annotation, strcat(objectname,searchstr1));
       if length(jc) > 0
           D(i).annotation.object(ind(j)).parts = []; %gives up parts if has
           num = length(D(i).annotation.object(jc(1)).parts);
           part = rmfield(D(i).annotation.object(ind(j)),'parts');
           [foo, remain] = strtok(part.name,':');
           part.name = remain(2:end);
           if (num == 0)
               D(i).annotation.object(jc(1)).parts = part;
           else
               D(i).annotation.object(jc(1)).parts(num+1) = part;
           end
           D(i).annotation = LHIMergeObjects(D(i).annotation,HOMELABELMAPS,jc(1),ind(j));
           ind(ind > ind(j)) = ind(ind > ind(j)) - 1; 
       else %creates objects
           part = rmfield(D(i).annotation.object(ind(j)),'parts');
           [foo, remain] = strtok(part.name,':');
           part.name = remain(2:end);
           D(i).annotation.object(ind(j)).name = objectname;
           D(i).annotation.object(ind(j)).parts = part;
       end
   end
end 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?