首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何显示坐标和使用ginput

如何显示坐标和使用ginput
EN

Stack Overflow用户
提问于 2012-07-13 01:24:07
回答 1查看 9.1K关注 0票数 6

我似乎不能让我的图像显示鼠标光标的坐标,同时也无法使用ginput存储点。

我目前正在尝试以下内容:

代码语言:javascript
复制
MriHotrod = imread('Image.bmp');
Fig = figure('Name','BobDole'),...
    imshow(Image, 'InitialMagnification', 250)

axis on
impixelinfo

Image_1 = ginput(4)

close BobDole

ginput仍然有效,但是impixelinfo保持不变。

代码语言:javascript
复制
Pixel Info = (X, Y) Pixel Value

我知道一些绕过这个问题的方法,但它们涉及到函数。这似乎是一个可以避免使用函数的相当简单的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-13 02:55:49

如果输入edit ginput并滚动到第238-ish行,您将看到

代码语言:javascript
复制
% Adding this to enable automatic updating of currentpoint on the figure 
set(fig,'WindowButtonMotionFcn',@(o,e) dummy());

换句话说,ginput在图中设置了一个WindowButtonMotionFcn。我猜impixelinfo也使用这个函数,所以一旦调用ginput,它就会被禁用。

实际上,在impixelinfoval (impixelinfo使用的函数)中,我们可以在第83行找到:

代码语言:javascript
复制
callbackID = iptaddcallback(hFig,'WindowButtonMotionFcn', @displayPixelInfo);

奇怪的是:在你点击4个点之后,它是如何被重置的?

这个魔术是由ginput的第222-ish行完成的

代码语言:javascript
复制
initialState.uisuspendState = uisuspend(fig);

显然,uisuspend是一个小的未记录的函数,用于挂起任何预先存在的WindowButton*函数,以便稍后重置它们。所以,如果你注释掉这行

代码语言:javascript
复制
%initialState.uisuspendState = uisuspend(fig);

保存ginput,然后重做整个过程,你就会看到你想要的行为。

您还将看到为什么这些功能一开始就会挂起--出于我不太理解的原因,当启用两个这样的功能时,一切都变得非常慢。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11457242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档