5

Parece que mi imagen no muestra las coordenadas del cursor del mouse, y también uso la ginput para almacenar puntos al mismo tiempo.Cómo mostrar las coordenadas y usar ginput

Actualmente estoy tratando lo siguiente:

MriHotrod = imread('Image.bmp'); 
Fig = figure('Name','BobDole'),... 
    imshow(Image, 'InitialMagnification', 250) 

axis on 
impixelinfo 

Image_1 = ginput(4) 

close BobDole 

El ginput todavía funciona, pero el impixelinfo mantiene constante

Pixel Info = (X, Y) Pixel Value 

Soy consciente de algunos métodos de conseguir alrededor de esto, pero implican funciones . Esto parece un problema bastante simple que puede evitar el uso de funciones.

Respuesta

4

Si escribe edit ginput y desplazarse a la línea 238-ish, verá

% Adding this to enable automatic updating of currentpoint on the figure 
set(fig,'WindowButtonMotionFcn',@(o,e) dummy()); 

En otras palabras ginput, establece un WindowButtonMotionFcn en la figura. Mi suposición es que impixelinfo también usa esta función, por lo que se desactiva tan pronto como se llama a ginput.

De hecho, en impixelinfoval (una función utilizada por impixelinfo) encontramos alrededor de la línea 83:

callbackID = iptaddcallback(hFig,'WindowButtonMotionFcn', @displayPixelInfo); 

Lo curioso es entonces: ¿cómo se consigue restablecer después de que haga clic en 4 puntos?

Esta magia se logra mediante la línea 222-ish de ginput:

initialState.uisuspendState = uisuspend(fig); 

Al parecer, uisuspend es una pequeña función indocumentado que se utiliza para suspender cualquier WindowButton* funciones de pre-existentes, con el fin de restablecer posteriormente. Por lo tanto, si a comentar la línea

%initialState.uisuspendState = uisuspend(fig); 

y guardar ginput, y volver a hacer todo el asunto, se ve el comportamiento que desea.

También verá por qué estas funciones se suspenden en primer lugar. Por razones que no entiendo del todo, todo se vuelve lento cuando dos de estas funciones están habilitadas.

+0

Gracias por su respuesta, lamentablemente nuestras funciones de ginput deben ser muy diferentes, ya que ninguna de las líneas que mencionó están en mi función ginput. Intenté comentar esto: state = uisuspend (fig) Esto aparece en la línea 92. Sin embargo, esto no funcionó. – Shinobii

+0

¿Qué versión de Matlab tienes? –

+0

Versión: 7.10.0 R2010a – Shinobii

Cuestiones relacionadas