Matlab 如何显示坐标和使用ginput
我似乎无法让我的图像显示鼠标光标的坐标,同时也无法使用ginput存储点 我目前正在尝试以下方法:Matlab 如何显示坐标和使用ginput,matlab,user-interface,mousemove,matlab-figure,cursor-position,Matlab,User Interface,Mousemove,Matlab Figure,Cursor Position,我似乎无法让我的图像显示鼠标光标的坐标,同时也无法使用ginput存储点 我目前正在尝试以下方法: MriHotrod = imread('Image.bmp'); Fig = figure('Name','BobDole'),... imshow(Image, 'InitialMagnification', 250) axis on impixelinfo Image_1 = ginput(4) close BobDole 轧花机仍在工作,但刺针保持不变 Pixel Info
MriHotrod = imread('Image.bmp');
Fig = figure('Name','BobDole'),...
imshow(Image, 'InitialMagnification', 250)
axis on
impixelinfo
Image_1 = ginput(4)
close BobDole
轧花机仍在工作,但刺针保持不变
Pixel Info = (X, Y) Pixel Value
我知道有一些方法可以解决这个问题,但它们涉及函数。这似乎是一个相当简单的问题,可以避免使用函数。如果键入
编辑ginput
并滚动到第238行,您将看到
% Adding this to enable automatic updating of currentpoint on the figure
set(fig,'WindowButtonMotionFcn',@(o,e) dummy());
换句话说,ginput
在图中设置了一个WindowButtonMotionFcn
。我猜ImpixeInfo
也使用此函数,因此只要调用ginput
,它就会被禁用
事实上,在impixelinfoval
(impixelinfo使用的函数)中,我们在第83行发现:
callbackID = iptaddcallback(hFig,'WindowButtonMotionFcn', @displayPixelInfo);
奇怪的是:点击4点后,它是如何复位的
这个魔法是通过ginput
的第222行实现的:
initialState.uisuspendState = uisuspend(fig);
显然,uisuspend
是一个没有文档记录的小函数,用于挂起任何预先存在的WindowButton*
函数,以便稍后重置它们。所以,如果你把这行注释掉
%initialState.uisuspendState = uisuspend(fig);
保存ginput
,然后重新执行整个操作,您将看到所需的行为
您还将看到为什么这些函数首先会被挂起——原因我不太明白,当启用两个这样的函数时,一切都会变得非常缓慢。感谢您的回复,不幸的是,我们的ginput函数必须非常不同,因为您提到的行都不在我的ginput函数中。我试着注释:state=uisuspend(图),它出现在第92行。但是这不起作用。你有什么版本的Matlab?啊。我有R2012a。显然,在过去的两年里,他们改变了很多。无论如何,这个理由应该仍然成立。您是否总是在保存后重新执行所有命令?不太清楚您的意思,但我保存编辑,然后重新运行脚本。但是不用担心,非常感谢您的帮助,我将用一把梳子仔细检查ginput,或者从朋友那里获得R2012a ginput函数。再次感谢!使用R2010a注释这两行:第92行和第183行。