数据集中标签.mat转.xml
针对BIT-vehicle数据集建立的转化程序,根据数据集给出的标签.mat转为训练需要的.xml文件
data=https://www.it610.com/article/load('VehicleInfo.mat')
cars=data.VehicleInfo;
for n=1:length(cars)
n;
car=cars(n);
%%
%每一辆车新建一个xml文件存储车的信息
carName=car.name;
%图片的高度
carHeight=car.height;
%图片的宽度
carWidth=car.width;
%新建xml文件
annotation = com.mathworks.xml.XMLUtils.createDocument('annotation');
annotationRoot = annotation.getDocumentElement;
%定义子节点,xml的存储路径
folder=annotation.createElement('folder');
folder.appendChild(annotation.createTextNode(sprintf('%s','F:\Cars Dataset\lable_test\')));
%这里为xml存放的目录
annotationRoot.appendChild(folder);
%图片的名称,包含后缀名把-4删掉显示,jpg
jpgName=annotation.createElement('filename');
jpgName.appendChild(annotation.createTextNode(sprintf('%s',carName(1:end))));
annotationRoot.appendChild(jpgName);
%source就不添加了
%添加图片的size
jpgSize=annotation.createElement('size');
annotationRoot.appendChild(jpgSize);
%定义size的子节点
%图片宽度
width=annotation.createElement('width');
width.appendChild(annotation.createTextNode(sprintf('%i',carWidth)));
jpgSize.appendChild(width);
%图片高度
height=annotation.createElement('height');
height.appendChild(annotation.createTextNode(sprintf('%i',carHeight)));
jpgSize.appendChild(height);
%图片深度,彩色图片3
depth=annotation.createElement('depth');
depth.appendChild(annotation.createTextNode(sprintf('%i',3)));
jpgSize.appendChild(depth);
segmented=annotation.createElement('segmented');
segmented.appendChild(annotation.createTextNode(sprintf('%i',0)));
%表示已经标注过了
annotationRoot.appendChild(segmented);
%接下来是每一辆车的标注信息%%
carVehicles=car.vehicles;
L=length(carVehicles);
if L>1
carName
L
end
for nn=1:length(carVehicles)
vehicle=carVehicles(nn);
%标注框的最左侧坐标
vLeft=vehicle.left;
%标注框的最上边坐标
vTop=vehicle.top;
%标注框的最右侧坐标
vRight=vehicle.right;
%标注框最下面坐标
vBottom=vehicle.bottom;
%车的类别
vCategory=vehicle.category;
%图片中有多少个标注对象
carNvehicles=car.nVehicles;
%在这里生成每一符图片的txt文件,用于
%%注意一张图片中可能会有多个对象
%%matlab直接生成xml对象???
%将这一辆车的信息注入xml中
object=annotation.createElement('object');
annotationRoot.appendChild(object);
%标注框类别名称
categoryName=annotation.createElement('name');
categoryName.appendChild(annotation.createTextNode(sprintf('%s',vCategory)));
object.appendChild(categoryName);
pose=annotation.createElement('pose');
pose.appendChild(annotation.createTextNode(sprintf('%s','Unspecified')));
object.appendChild(pose);
truncated=annotation.createElement('truncated');
truncated.appendChild(annotation.createTextNode(sprintf('%i',0)));
object.appendChild(truncated);
Difficult=annotation.createElement('Difficult');
Difficult.appendChild(annotation.createTextNode(sprintf('%i',0)));
object.appendChild(Difficult);
bndbox=annotation.createElement('bndbox');
object.appendChild(bndbox);
xmin=annotation.createElement('xmin');
xmin.appendChild(annotation.createTextNode(sprintf('%i',vLeft)));
bndbox.appendChild(xmin);
ymin=annotation.createElement('ymin');
ymin.appendChild(annotation.createTextNode(sprintf('%i',vTop)));
bndbox.appendChild(ymin);
xmax=annotation.createElement('xmax');
xmax.appendChild(annotation.createTextNode(sprintf('%i',vRight)));
bndbox.appendChild(xmax);
ymax=annotation.createElement('ymax');
ymax.appendChild(annotation.createTextNode(sprintf('%i',vBottom)));
bndbox.appendChild(ymax);
end
%存储xml
savePath=['F:\Cars Dataset\lable_test\',carName(1:end-3),'xml'];
xmlwrite(savePath,annotation);
end
【数据集中标签.mat转.xml】
推荐阅读
- Docker应用:容器间通信与Mariadb数据库主从复制
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。
- 使用协程爬取网页,计算网页数据大小
- Java|Java基础——数组
- Python数据分析(一)(Matplotlib使用)
- Jsr303做前端数据校验
- Spark|Spark 数据倾斜及其解决方案
- 数据库设计与优化
- 爬虫数据处理HTML转义字符
- 数据库总结语句