How to select a regionprops from a popup menu in a GUI?

1 view (last 30 days)
Dear all,
I am building one GUI which include a popup menu for a 'regionprops' function that I need. I am trying to call the type of 'regionprops' after clicking a push button but it is not working. My code is as follows:
popup_2_Value = get(handles.popupmenu2, 'Value');
if popup_2_Value == 1
RegPropType = 'Area';
elseif popup_2_Value == 2
RegPropType = 'MajorAxisLength';
elseif popup_2_Value == 3
RegPropType = 'MinorAxisLength';
elseif popup_2_Value == 4
RegPropType = 'Perimeter';
elseif popup_2_Value == 5
RegPropType = 'Orientation';
end
%
X = im2bw(I); %binary image of the input
CC = bwconncomp(X); %Connected components
mal = regionprops(CC,'RegPropType'); % normal code format is --> mal = regionprops(CC,'Area');
mal = vertcat(mal(:).RegPropType); % normal code format is --> mal = vertcat(mal(:).Area);
This error message appears "Error using regionprops>getPropsFromInput"
Any idea how to solve such problem?
With kind regard,
Meshoo

Accepted Answer

ES
ES on 23 Jan 2014
From what I see, you should have done
mal = regionprops(CC,RegPropType)
instead of
mal = regionprops(CC,'RegPropType');%Note the missing quotes
Since the variable RegPropType has the required string like 'area' or ' Perimeter' etc. When you pass as 'RegPropType', this string itself is passed, and not the value inside the variable RegPropType.
  2 Comments
Meshooo
Meshooo on 23 Jan 2014
Yes, you are right for the first part. As you said it should be
mal = regionprops(CC,RegPropType)
But how can we do the following second part
mal = vertcat(mal(:).RegPropType);
Thank you very much.
ES
ES on 23 Jan 2014
you can do an eval.
mal = eval(['vertcat(mal(:).',RegPropType]);

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!