Reading multiple files from a folder and applying regionProps and saving co-ordinates

1 次查看(过去 30 天)
Hi,
I want to create bounding boxes around objects in an image and then store the co-ordinates of all the bounding boxes in the images in a table.
For example, if I have 3 images with different amounts of bounding boxes in each image it should be stored as something like this:
image 1- [a1,b1,c1,d1; a2,b2,c2,d2; a3,b3,c3,d3; a4,b4,c4,d4]
image 2 - [a1,b1,c1,d1; a2,b2,c2,d2]
image 3 - [a1,b1,c1,d1; a2,b2,c2,d2; a3,b3,c3,d3 ]
etc.
The problem I am having now is that only the last images bounding box co-ordinates are being stored in the array "prop". I understand that i should have some function to write these co-ordinates to this array but I am unsure of how to do this.
They are also not being stored in the format as shown above.
My code is shown below.
Any assistance would be greatly appreciated.
Thanks!!
Regards,
Kanu
fileFolder = 'D:\Binary1';
dirOutput = dir(fullfile(fileFolder,'Pothole*.jpg'));
fileNames = {dirOutput.name};
for k=1:length(fileNames)
H = fileNames{k};
S = imread(fileNames{k});
bn = imbinarize(S);
imshow(bn)
bn = bwareaopen(bn,100);
imshow(bn);
[L Ne]= bwlabel(bn);
prop =regionprops(L);
hold on
for n = 1:length(prop)
rectangle('Position',prop(n).BoundingBox,'EdgeColor','g','LineWidth',2);
end
hold off
A = struct2cell(prop);
end

回答(1 个)

KALYAN ACHARJYA
KALYAN ACHARJYA 2019-8-7
编辑:KALYAN ACHARJYA 2019-8-7
prop=cell(1,length(fileNames));
for .....
prop{k}=regionprops(L);
....
end
And prop retuen the cell array having the properties of all images one by one
>> prop
prop =
1×n cell array %here n is the length of fileNames
[255×1 struct] [255×1 struct] [255×1 struct] [255×1 struct] [255×1 struct].............
Here you can acess the properties of any images by simple calling prop, Say
For 1st image prop{1}, 2nd image prop{2}...so on
  1 个评论
Kanushka Gajjar
Kanushka Gajjar 2019-8-7
If I do this, i get the following error:
Dot indexing is not supported for variables of this type.
Error in RegPropsTwo (line 33)
rectangle('Position',prop(n).BoundingBox,'EdgeColor','g','LineWidth',2);

请先登录,再进行评论。

标签

Community Treasure Hunt

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

Start Hunting!

Translated by