MATLAB:重要的getPosition奇怪行为

MATLAB:重要的getPosition奇怪行为,matlab,image,Matlab,Image,我对getPosition返回的值有疑问。下面是我的代码。它允许用户在给定图像上设置10个点: figure ,imshow(im); colorArray=['y','m','c','r','g','b','w','k','y','m','c']; pointArray = cell(1,10); % Construct boundary constraint function fcn = makeConstrainToRectFcn('impoint',get(gca,'XLim'),get

我对getPosition返回的值有疑问。下面是我的代码。它允许用户在给定图像上设置10个点:

figure ,imshow(im);
colorArray=['y','m','c','r','g','b','w','k','y','m','c'];
pointArray = cell(1,10);
% Construct boundary constraint function
fcn = makeConstrainToRectFcn('impoint',get(gca,'XLim'),get(gca,'YLim'));
for i = 1:10
    p = impoint(gca);
    % Enforce boundary constraint function using setPositionConstraintFcn
    setPositionConstraintFcn(p,fcn);
    setColor(p,colorArray(1,i));
    pointArray{i}=p;
    getPosition(p)
end
当我开始在图像上设置点时,我会得到像[675.000 538.000]这样的结果,这意味着坐标的x部分是675,y部分是538,对吗?这是MATLAB文档所说的,但是由于图像是576*120(显示在窗口中),这是不符合逻辑的

在我看来,getPosition首先返回y坐标。我需要澄清一下


谢谢你的帮助

你的代码使用了图像处理工具箱,我没有,所以这是推测。坐标系可能设置为图形窗口(甚至可能设置为屏幕),而不是图像


要测试这一点,请尝试单击图像外部的点以查看是否可以找到原点。

您的代码使用图像处理工具箱,我没有,因此这是推测。坐标系可能设置为图形窗口(甚至可能设置为屏幕),而不是图像


要测试这一点,请尝试单击图像外部的点以查看是否可以找到原点。

我刚刚尝试在MATLAB 7.8.0(R2009a)中运行您的代码,但对于576-x-120或120-x-576的图像大小没有问题(我不确定您使用的方向)。如果我在图像中单击鼠标左键,它会放置一个新的可移动点。它不允许我在图像外放置任何点

我发现的一个小错误是,如果在图像中单击鼠标左键,然后在按住左键的同时将鼠标指针拖动到图像外部,它会将可移动点放置在图像外部,而不会显示它,显示一组未剪裁到轴矩形的坐标


我不确定你有什么问题。不管你使用的是什么MATLAB版本,这可能都是一个bug。我建议重新启动MATLAB,或者清除工作区中的所有变量(图像数据除外)。

我刚刚尝试在MATLAB 7.8.0(R2009a)中运行您的代码,并且图像大小为576-by-120或120-by-576(我不确定您使用的方向)。如果我在图像中单击鼠标左键,它会放置一个新的可移动点。它不允许我在图像外放置任何点

我发现的一个小错误是,如果在图像中单击鼠标左键,然后在按住左键的同时将鼠标指针拖动到图像外部,它会将可移动点放置在图像外部,而不会显示它,显示一组未剪裁到轴矩形的坐标


我不确定你有什么问题。不管你使用的是什么MATLAB版本,这可能都是一个bug。我建议重新启动MATLAB,或者清除工作区中的所有变量(图像数据除外)。

可能值得检查您使用的渲染器(Painter或OpenGL),一位同事向我展示了在使用OpenGL渲染器时拾取点的一些古怪行为,这在使用Painter渲染器时消失了。

可能值得检查一下您使用的渲染器(Painter或OpenGL),一位同事向我展示了在使用OpenGL渲染器时拾取点的一些wierd行为,这在使用Painter渲染器时消失了