2015-05-02 3 views
0

Итак, у меня есть этот бит кода, который использовался для работы в предыдущих версиях Matlab, но теперь в версии R2015a он больше не работает.Matlab не ждет ввода пользователя после нажатия ввода на предыдущем рисунке

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

Дело в том, что кажется, что, когда я нажимаю «Enter», чтобы подтвердить последнюю точку на фазе, она остается на буфере, и когда начинается входная секция, Matlab думает, что я нажал кнопку ввода, не имея времени, чтобы дать координаты.

Я попытался использовать set(gcf,'CurrentCharacter','char(0)), чтобы исправить эту проблему, но она не работает.

Если я использую режим «отладки», и я останавливаюсь на входной строке: он работает.

npoints = input('How many points do you want to select in the picture ? ') ; 
refpoints = cell(1,npoints); 

for i = 1:npoints % this bit of code allows the user to zoom on a figure, press escape 
% when he's done zooming, click on the desired point and then press enter to confirm 
    fig = figure ; 
    imshow(picture) 
    zoom on; 
    waitfor(gcf,'CurrentCharacter',char(27)); 
    zoom off 
    refpoints{i} = ginput(1); % select point round to the closest pixel 
    waitfor(gcf,'CurrentCharacter',char(13)); 
    close(fig); 
end 

%%%%%%%%%%%%%%%%% 
% Cell2array... % 
%%%%%%%%%%%%%%%%% 

x1 = zeros(npoints,1); % pixel coordinates 
y1 = zeros(npoints,1); 

for k = 1:size(refpoints,2) 
x1(k) = round(refpoints{1,k}(1)); 
y1(k) = round(refpoints{1,k}(2)); 
end 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
% Calculating the world coordinates % 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 

disp('Now you need to give the physical coordinates to each of the points specified!') 
disp('-----------------------') 

world = zeros(npoints,2); 
X1 = zeros(npoints,1); % Real world coordinates 
Y1 = zeros(npoints,1); 

fig1 = figure ; 
for jj=1:npoints 
imshow(picture); 
hold on 
plot(x1(jj),y1(jj),'wo'); 
hold off 
world(jj,:) = input('Please enter the world coordinates for the white \n circle marked in the current figure (in square parenthesis): '); 
end 
close(fig1); 

У вас есть идея, как исправить это?

спасибо.

ответ

0

Nevermind, я использовал Space Bar вместо Enter, и он отлично работает.