我似乎无法让我的图像显示鼠标光标的坐标,也可以使用ginput同时存储点。
我目前正在尝试以下方法:
MriHotrod = imread('Image.bmp');
Fig = figure('Name','BobDole'),...
imshow(Image, 'InitialMagnification', 250)
axis on
impixelinfo
Image_1 = ginput(4)
close BobDole
ginput仍然有效,但impixelinfo保持不变
Pixel Info = (X, Y) Pixel Value
我知道一些解决这个问题的方法,但它们涉及到功能。这似乎是一个相当简单的问题,可以避免使用函数。
答案 0 :(得分:5)
如果您输入edit ginput
并滚动到238-ish行,您会看到
% Adding this to enable automatic updating of currentpoint on the figure
set(fig,'WindowButtonMotionFcn',@(o,e) dummy());
换句话说,ginput
在图中设置WindowButtonMotionFcn
。我的猜测是impixelinfo
也使用了这个函数,因此只要调用ginput
就会被禁用。
确实,在impixelinfoval
(impixelinfo
使用的函数)中,我们在第83行附近找到了:
callbackID = iptaddcallback(hFig,'WindowButtonMotionFcn', @displayPixelInfo);
奇怪的是:点击4分后如何重置?
这种魔力是由ginput
的第222条线完成的:
initialState.uisuspendState = uisuspend(fig);
显然,uisuspend
是一个未记录的函数,用于暂停任何预先存在的WindowButton*
函数,以便稍后重置它们。所以,如果你注释掉这一行
%initialState.uisuspendState = uisuspend(fig);
并保存ginput
,并重新执行整个操作,您会看到所需的行为。
你也会看到为什么这些函数首先被暂停 - 由于我不太明白的原因,当启用两个这样的函数时,一切都变得非常慢。