在利用labelImg 进行图片中的目标标记时,由于是不同的人标的,类别名的大小写不一致,需要进行修改使得其统一,同时考虑一张图坑会有多个目标,需要调用 .getLength 属性。修改的代码整理如下:
%修改xml文件中的类别名20191125
for i = 1:1084
xmlDoc = xmlread(['G:\VOC2007\Annotations\' num2str(i) '.xml']);
IDArray = xmlDoc.getElementsByTagName('name');
for j = 1:IDArray.getLength%可能有多个name
thisItem = IDArray.item(j-1);%从零开始索引
nodeContent = char(IDArray.item(j-1).getFirstChild.getData);
if(strcmp(nodeContent,'Person'))
%修改为小写
IDArray.item(j-1).getFirstChild.setTextContent('person');
elseif(strcmp(nodeContent,'Cat'))
%修改为小写
IDArray.item(j-1).getFirstChild.setTextContent('cat');
end
end
xml_name = ['G:\VOC2007\OutAnno\' num2str(i) '.xml'];
xmlwrite(xml_name,xmlDoc);
fprintf('%d\n',i);
end
一开始想用python实现,但是由于有中文路径,修改后另存为的时候会有格式报错,因此采用了m文件的方式。