MATLAB 添加鼠标点击坐标到矩阵?
MATLAB Add Mouse Click Coordinate to Matrix?
我正在 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);
例如,当我点击图像上的一个点时,我正在取这个结果。我不能select再点。
99.3806 37.1915
99.3806 37.1915
99.3806 37.1915
一个更安全的替代方法是使用 ginput,您可以使用它 select 可变数量的点并轻松存储它们的坐标。你不需要循环;一旦所有点都被 selected.
,坐标就会被存储
这是一个简单的例子:
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);
我正在 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);
例如,当我点击图像上的一个点时,我正在取这个结果。我不能select再点。
99.3806 37.1915
99.3806 37.1915
99.3806 37.1915
一个更安全的替代方法是使用 ginput,您可以使用它 select 可变数量的点并轻松存储它们的坐标。你不需要循环;一旦所有点都被 selected.
,坐标就会被存储这是一个简单的例子:
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);