MATLAB:impoint getPosition奇怪的行为

时间:2009-07-12 14:42:17

标签: 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(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坐标。我需要对此作一些澄清。

感谢您的帮助

3 个答案:

答案 0 :(得分:2)

我刚尝试在MATLAB 7.8.0(R2009a)中运行您的代码,并且没有图像尺寸为576×120或120×576的问题(我不确定您使用的是哪种方向)。如果我在图像中左键单击,它会放置一个新的可移动点。它不允许我在图像之外放置任何点。

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

我不确定你的问题是什么。也许这是你正在使用的任何MATLAB版本的错误。我建议重新启动MATLAB,或清除工作区中的所有变量(图像数据 im 除外)。

答案 1 :(得分:1)

可能值得检查一下你正在使用哪个渲染器(Painter或OpenGL),一位同事在使用OpenGL渲染器时使用绘图渲染器显示了一些奇怪的点选择行为。

答案 2 :(得分:0)

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

要测试此功能,请尝试点击图像外部的点以查看是否可以找到原点。