2013-09-26 2 views
1

Что мне нужно сделать, это предопределить много ROI в MATLAB, используя imfreehand, а затем поместить эти ROI в скрипт. Это действительно не так сложно, как я могу их назвать, и просто продолжаю рисовать. Но я потерял то, как сохранить эти ROI в сценарии без необходимости переопределять ROIS.Сохранение imfreehand ROI в скрипте

Как я могу сохранить ROI в скрипте?

ответ

0

Во-первых, вы можете получить доступ к координатам x, y любых линий, которые вы рисуете. Когда вы вызываете imfreehand, сохраните его дескриптор и используйте его для доступа к данным x, y в строках, которые вы нарисовали.

hf = imfreehand; 
% draw line, maybe insert pause here 
hl = findobj(hf,'Type','line','Tag','top line'); 
x = get(hl,'XData'); 
y = get(hl,'YData'); 

Затем вы можете использовать `mat2str2 ​​для сохранения переменных в виде строк, которые можно поместить в сценарий:

>> x = 1:10; 
>> sprintf('x = %s',mat2str(x)) 
ans = 
x = [1 2 3 4 5 6 7 8 9 10] 

Просто скопируйте это в свой сценарий.

+0

Это позволяет мне извлекать данные x и y, но есть ли простой способ поместить это в файл сценария? Я не хочу иметь imfreehand в скрипте, так как я не хочу, чтобы каждый раз, когда программа запускалась, каждый раз получал 50 ROI. Это объясняет это немного лучше? – Gbru

0

Из документации MATLAB по:

figure, imshow('pout.tif'); 
h = imfreehand; 
position = wait(h); %This blocks until finished 

вы также можете сделать

pos = getPosition(h) %gets the position 

Я думаю, что вы спрашиваете, хотя о том, как хранить каждый набор позиций в одной переменной. Для этого массив ячеек, вероятно, наиболее удобен. Надеюсь, это поможет.

Смежные вопросы