MATLAB Добавить координаты щелчка мышью к матрице?

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

function ImageClickCallback ( objectHandle , eventData )
array = 3:2;
for i = 1:3
   axesHandle  = get(objectHandle,'Parent');
   coordinates = get(axesHandle,'CurrentPoint'); 
   coordinates = coordinates(1,1:2);
   array(i,1) = coordinates(1);
   array(i,2) = coordinates(2);
end
disp(array);

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

99.3806   37.1915 
99.3806   37.1915
99.3806   37.1915

1 ответ

Решение

Гораздо более безопасной альтернативой было бы использование ginput, с помощью которого вы можете выбрать переменное количество точек и легко сохранить их координаты. Вам не нужна петля; координаты сохраняются после выбора всех точек.

Вот простой пример:

clear
clc
close all

A = imread('peppers.png');

imshow(A,[]);
hold on

%// Number of points
N = 5;

array = zeros(N,2);

%// Use a for loop and plot 1 point at a time.
for k = 1:N

   [array(k,1),array(k,2)] = ginput(1);

   %// Display the points
   scatter(array(k,1),array(k,2),60,'k','filled')

end

Пример вывода для array:

   123.0000   87.0000
   95.0000  206.0000
  256.0000   85.0000
  236.0000  253.0000
  395.0000  117.0000

И изображение с отображенными точками:

Следовательно, вы могли бы выглядеть так:

function ImageClickCallback ( objectHandle , eventData )

   array = zeros(3,2);

   [array(:,1),array(:,2)] = ginput(3);
Другие вопросы по тегам