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