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);