Matlab how to read txt data in a specific format into the workspace

4 次查看(过去 30 天)
My txt file is organized in the following format:
image filename
n (number of objects of interest in the image)
bounding box for object 1
bounding box for object 2
...
bounding box for object n
For example, the contents in the txt file are listed as follows:
images/1.jpg
1
39.284331 23.721327 88.000000 135.915360
images/2.jpg
4
107.912089 129.898400 62.372022 89.263200
186.266100 61.768245 64.831800 106.847910
298.909724 34.289100 73.830894 105.977200
135.454600 -63.205613 109.739600 176.375026
images/3.jpg
2
136.462492 18.762699 121.522126 187.348778
333.601798 18.139177 104.944018 155.239682
Now I want to read the data file into a structure data (N*1, where N is equal to the number of images) with three fields, file name, number of objects and bounding box. Is there some efficient way to achieve that?

采纳的回答

KSSV
KSSV 2016-10-14
编辑:KSSV 2016-10-14
fileID = fopen('yourfile.txt','rt');
data = textscan(fileID,'%s','delimiter','\n');
C = data{1} ;
fclose(fileID);
IdxC = strfind(C, 'images');
Idx = find(not(cellfun('isempty', IdxC)));
nimages = length(Idx) ; % total number of images
iwant = struct ; % initialize structure
for i = 1:nimages-1
iwant(i).name = C{Idx(i)} ;
iwant(i).no_objects = str2num(C{Idx(i)+1}) ;
iwant(i).bounding_box = C((Idx(i)+2):(Idx(i+1)-1)) ;
end
iwant(nimages).name = C(Idx(nimages)) ;
iwant(nimages).no_objects = C(Idx(nimages)+1) ;
iwant(nimages).bounding_box = C(Idx(nimages)+2:end) ;
  3 个评论

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Convert Image Type 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by