mat文件生成VOC数据格式

clc;

clear;

close all;

dbstop if error;


data_path = 'E:\Data4T\Hands_DATA';

res_path = 'E:\Data4T\Hands_DATA\Res_mat';

im_path = 'E:\Data4T\Hands_DATA\images';

mat_list = dir(fullfile(res_path, '*.mat'));

num_mat = length(mat_list);


save_label_path = fullfile(data_path, 'labels');

if ~exist(save_label_path, 'dir')

mkdir(save_label_path);

end


folder_name = 'images';

for i_mat = 1 : num_mat

fprintf('%d/%d\n', i_mat, num_mat);

load(fullfile(res_path, mat_list(i_mat).name));

im = imread(fullfile(im_path, img_name));

[h, w, d] = size(im);


%% 

CreateNode = com.mathworks.xml.XMLUtils.createDocument('annotation');

Root = CreateNode.getDocumentElement;


node = CreateNode.createElement('folder');

node.appendChild(CreateNode.createTextNode(sprintf('%s', folder_name)));

Root.appendChild(node);


node = CreateNode.createElement('filename');

node.appendChild(CreateNode.createTextNode(sprintf('%s', img_name)));

Root.appendChild(node);


% source node

source_node = CreateNode.createElement('source');

Root.appendChild(source_node);


node = CreateNode.createElement('filename');

node.appendChild(CreateNode.createTextNode(sprintf('NULL')));

source_node.appendChild(node);


node = CreateNode.createElement('annotation');

node.appendChild(CreateNode.createTextNode(sprintf('NULL')));

source_node.appendChild(node);


node = CreateNode.createElement('image');

node.appendChild(CreateNode.createTextNode(sprintf('NULL')));

source_node.appendChild(node);


node = CreateNode.createElement('flickrid');

node.appendChild(CreateNode.createTextNode(sprintf('NULL')));

source_node.appendChild(node);


% owner node

owner_node = CreateNode.createElement('owner');

Root.appendChild(owner_node);


node = CreateNode.createElement('flickrid');

node.appendChild(CreateNode.createTextNode(sprintf('NULL')));

owner_node.appendChild(node);


node = CreateNode.createElement('name');

node.appendChild(CreateNode.createTextNode(sprintf('NULL')));

owner_node.appendChild(node);


% size node

size_node = CreateNode.createElement('size');

Root.appendChild(size_node);


node = CreateNode.createElement('width');

node.appendChild(CreateNode.createTextNode(sprintf('%s', num2str(w))));

size_node.appendChild(node);


node = CreateNode.createElement('height');

node.appendChild(CreateNode.createTextNode(sprintf('%s', num2str(h))));

size_node.appendChild(node);


node = CreateNode.createElement('depth');

node.appendChild(CreateNode.createTextNode(sprintf('%s', num2str(d))));

size_node.appendChild(node);


% segmente node

node = CreateNode.createElement('segmented');

node.appendChild(CreateNode.createTextNode(sprintf('NULL')));

Root.appendChild(node);


% obj node

obj_node = CreateNode.createElement('object');

Root.appendChild(obj_node);


node = CreateNode.createElement('label');

node.appendChild(CreateNode.createTextNode(sprintf('%s', bbox_class{1})));

obj_node.appendChild(node);


node = CreateNode.createElement('pose');

node.appendChild(CreateNode.createTextNode(sprintf('NULL')));

obj_node.appendChild(node);


node = CreateNode.createElement('truncated');

node.appendChild(CreateNode.createTextNode(sprintf('NULL')));

obj_node.appendChild(node);


node = CreateNode.createElement('difficult');

node.appendChild(CreateNode.createTextNode(sprintf('NULL')));

obj_node.appendChild(node);


% bounding box node

bndbox_node = CreateNode.createElement('bndbox');

obj_node.appendChild(bndbox_node);


node = CreateNode.createElement('xmin');

node.appendChild(CreateNode.createTextNode(sprintf('%s', num2str(bbox_all(1)))));

bndbox_node.appendChild(node);


node = CreateNode.createElement('ymin');

node.appendChild(CreateNode.createTextNode(sprintf('%s', num2str(bbox_all(2)))));

bndbox_node.appendChild(node);


node = CreateNode.createElement('xmax');

node.appendChild(CreateNode.createTextNode(sprintf('%s', num2str(bbox_all(3)))));

bndbox_node.appendChild(node);


node = CreateNode.createElement('ymax');

node.appendChild(CreateNode.createTextNode(sprintf('%s', num2str(bbox_all(4)))));

bndbox_node.appendChild(node);


[~, nn, ~] = fileparts(img_name);

xml_name = fullfile(save_label_path, [nn, '.xml']);

xmlwrite(xml_name, CreateNode);

end

你可能感兴趣的:(mat文件生成VOC数据格式)