基于matlab的XML文件批量处理
程序员文章站
2022-04-17 15:54:31
...
基于matlab的XML文件批量处理
maindir = ’ ‘; %引号里面填XML文件所在的文件路径
subdirpath = fullfile( maindir, ‘*.jpg’ ); %读取文件夹中jpg格式的图片(以jpg格式图片为例,也可以是其他格式)
img = dir( subdirpath1 ); %将找到的所有XML文件内容传递给img
for j = 1 : length( img) % length( img)是XML文件夹中XML文件的个数
{
imagepath = fullfile( maindir,img( j ).name);%将第 j个中的XML文件路径传递给 imagepath
image=imread(imagepath); %读取第 j 个XML文件
FDsArray = xmlDoc.getElementsByTagName('bndbox'); % 将所有FDs节点放入数组FDsArray
for i = 0 : FDsArray.getLength-1
thisItem = FDsArray.item(i); %
childNode = thisItem.getFirstChild ;
while ~isempty(childNode) % 遍历FDs的所有子节点,也就是遍历 ("rows, cols, data") 节点
if childNode.getNodeType == childNode.ELEMENT_NODE % 检查当前节点没有子节点, childNode.ELEMENT_NODE 定义为没有子节点。
childNodeNm = char(childNode.getTagName) ; % 当前节点的名字
childNodeData = char(childNode.getFirstChild.getData) ; % 当前节点的内容
m(k) = str2num(childNodeData);%缺陷区域坐标
}
对应的xml文件:
<?xml version="1.0"?>
-<annotation>
<folder>sc</folder>
<filename>scratches_1.jpg</filename>
-<source>
<database>NEU-DET</database>
</source>
-<size>
<width>200</width>
<height>200</height>
<depth>1</depth>
</size>
<segmented>0</segmented>
-<object>
<name>scratches</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
-<bndbox>
<xmin>26</xmin>
<ymin>12</ymin>
<xmax>43</xmax>
<ymax>171</ymax>
</bndbox>
</object>
</annotation>