Итак, у меня есть этот бит кода, который использовался для работы в предыдущих версиях 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);
У вас есть идея, как исправить это?
спасибо.