将voc2007标注格式转为普通文本

%matlab代码
%将VOC数据转换为普通格式的数据,格式为 :   图片路径  类别名  坐标0 坐标1 坐标2 坐标3   类别名  。。。。。 

%相当于读完图片名后 后面的个数就是5个倍数,每5个数就是一个物体

mydir = 'F:\projects\VOC2007\Annotations';    %VOC的XML文件标签路径
DIRS = dir(mydir);
[n, m] = size(DIRS);
for i=3:n
    xmlname = DIRS(i).name;
    DOMnode = xmlread([mydir,'\',xmlname]);
    txtname = xmlname(1:6)
    xRoot = DOMnode.getDocumentElement();
    Slides= xRoot.getElementsByTagName('object');
    Num_Slides = Slides.getLength();
    fp = fopen(strcat('.\','groundtruth1.txt'),'a');
    k = 0;
    for j=0:Num_Slides-1
        k = k+1;
        namecle = Slides.item(j).getElementsByTagName('name');
        thename{k} = char(namecle.item(0).getTextContent);
        xmin(k) = str2num(Slides.item(j).getElementsByTagName('bndbox').item(0).getElementsByTagName('xmin').item(0).getTextContent);
        ymin(k) = str2num(Slides.item(j).getElementsByTagName('bndbox').item(0).getElementsByTagName('ymin').item(0).getTextContent);
        xmax(k) = str2num(Slides.item(j).getElementsByTagName('bndbox').item(0).getElementsByTagName('xmax').item(0).getTextContent);
        ymax(k) = str2num(Slides.item(j).getElementsByTagName('bndbox').item(0).getElementsByTagName('ymax').item(0).getTextContent);    
    end   
    fprintf(fp,'%s ',strcat('F:\projects\VOC2007\JPEGImages\',strcat(txtname,'.jpg')));
    for z = 1:k
        fprintf(fp,'%s %d %d %d %d ',thename{z},xmin(z),ymin(z),xmax(z),ymax(z));
    end      
    if(i         fprintf(fp,'\r\n');
    end
     fclose(fp);
end

你可能感兴趣的:(脚本)