同时在两个数字上运行getpts()

时间:2016-01-25 04:31:45

标签: matlab matlab-figure

我想在Matlab中选择2个图像中的对应点,当我尝试使用getpts()时,首先必须选择第一个图像上的所有点,然后对第二个图像执行此操作,但是我想在第一张图像上选择第一个点然后转到第二个图像并选择该图像的第一个点并返回到第一个图像并且......直到第N个点。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

我会循环遍历你想要选择的点数,例如npoints=5。您可以为每个轴调用getpts,这就是为什么我为演示创建了带有两个子图的图形。在您选择"最后一点"之前,getpts不会返回("移位,右移或双击添加最终点并结束选择。")。因此,您必须在每个循环迭代中选择一个最终点以跳转到第二个图像。当您离开当前getpts函数调用时,您可能希望在刚刚单击的位置添加标记,因为它们会丢失。

figure;
ax1 = subplot(121);
imshow('moon.tif');
hold on;
ax2 = subplot(122);
imshow('mandi.tif');
hold on;

npoints = 5;

for idx = 1:npoints
    fprintf('Select point %d\n', idx);

    [X1,Y1] = getpts(ax1)
    plot(X1, Y1, 'c+'); % addd marker in ax1, cyan plus sign

    [X2,Y2] = getpts(ax2)
    plot(X2, Y2, 'c+'); % addd marker in ax1, cyan plus sign
end