我似乎不能让我的图像显示鼠标光标的坐标,同时也无法使用ginput存储点。
我目前正在尝试以下内容:
MriHotrod = imread('Image.bmp');
Fig = figure('Name','BobDole'),...
imshow(Image, 'InitialMagnification', 250)
axis on
impixelinfo
Image_1 = ginput(4)
close BobDoleginput仍然有效,但是impixelinfo保持不变。
Pixel Info = (X, Y) Pixel Value我知道一些绕过这个问题的方法,但它们涉及到函数。这似乎是一个可以避免使用函数的相当简单的问题。
发布于 2012-07-13 02:55:49
如果输入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-ish行完成的
initialState.uisuspendState = uisuspend(fig);显然,uisuspend是一个小的未记录的函数,用于挂起任何预先存在的WindowButton*函数,以便稍后重置它们。所以,如果你注释掉这行
%initialState.uisuspendState = uisuspend(fig);保存ginput,然后重做整个过程,你就会看到你想要的行为。
您还将看到为什么这些功能一开始就会挂起--出于我不太理解的原因,当启用两个这样的功能时,一切都变得非常慢。
https://stackoverflow.com/questions/11457242
复制相似问题