matlab - Circular ROI is not being drawn from input -
for reason, following code displays masked image roi @ 10,10 height , width 100,100. these initial values. seems image not update after getposition function. explain issue?
`i = imread('/users/imageuser/documents/pt300.tif'); h = imshow(i); % define circular roi square bounding box x = 10; y = 10; d1 = 100; d2 = 100; e = imellipse(gca, [x y d1 d2]); % roi can interactively moved/adjusted % not close figure window before createmask called %%% these lines needed if move or resize roi pos = getposition(e); x = pos(1); y = pos(2); d1 = pos(3); d2 = pos(4); %%% bw = createmask(e,h); pause; imshow(bw);`
you need put lines (note inverted order):
pause; bw = createmask(e,h);
before calling getposition
, otherwise new position not updated.
whole code:
clear clc close = imread('coins.png'); h = imshow(i); % define circular roi square bounding box x = 10; y = 10; d1 = 100; d2 = 100; e = imellipse(gca, [x y d1 d2]); pause; bw = createmask(e,h); % roi can interactively moved/adjusted % not close figure window before createmask called %%% these lines needed if move or resize roi pos = getposition(e) x = pos(1); y = pos(2); d1 = pos(3); d2 = pos(4); %%% figure imshow(bw);
sample output after dragging roi:
yay!
note: mentioned juicestain, instead of using pause
halt execution of program while user done creating gui, can use wait
wait until user double-clicks on roi object instead of having press key pause
command.
therefore, replace call pause
call wait(e)
.
Comments
Post a Comment