5

Non riesco a ottenere la mia immagine per visualizzare le coordinate del mio cursore del mouse, e utilizzare anche ginput per memorizzare i punti allo stesso tempo.Come visualizzare le coordinate e utilizzare ginput

Io attualmente sto cercando il seguente:

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

axis on 
impixelinfo 

Image_1 = ginput(4) 

close BobDole 

Il ginput funziona ancora, ma l'impixelinfo rimane costante

Pixel Info = (X, Y) Pixel Value 

Sono a conoscenza di alcuni metodi di ottenere intorno a questo, ma essi comportano funzioni . Questo sembra un problema piuttosto semplice che può evitare l'uso di funzioni.

risposta

4

Se si digita edit ginput e scorrere fino alla riga 238-ish, vedrete

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

In altre parole, ginput imposta un WindowButtonMotionFcn in figura. La mia ipotesi è che impixelinfo utilizzi anche questa funzione, quindi viene disabilitata non appena viene chiamato ginput.

Infatti, in impixelinfoval (una funzione utilizzata da impixelinfo) troviamo attorno alla riga 83:

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

La cosa strana è allora: come si ottiene ripristinare dopo aver fatto clic su 4 punti?

Questa magia è compiuta la linea 222-ish di ginput:

initialState.uisuspendState = uisuspend(fig); 

A quanto pare, uisuspend è una piccola funzione non documentata che viene utilizzato per sospendere qualsiasi WindowButton* funzioni pre-esistenti, al fine di ripristinare in un secondo momento. Quindi, se si commento questa riga

%initialState.uisuspendState = uisuspend(fig); 

e salvare ginput, e ri-fare il tutto, si vede il comportamento desiderato.

Si vedrà anche il motivo per cui queste funzioni vengono sospese in primo luogo - Per ragioni che non capisco, tutto diventa irrimediabilmente lento quando due di tali funzioni sono abilitate.

+0

Grazie per la tua risposta, sfortunatamente le nostre funzioni di ginput devono essere molto diverse, poiché nessuna delle righe che hai menzionato si trova nella mia funzione di ginput. Ho provato a commentare questo: state = uisuspend (fig) Questo appare alla riga 92. Questo non ha funzionato comunque. – Shinobii

+0

Quale versione di Matlab hai? –

+0

Versione: 7.10.0 R2010a – Shinobii

Problemi correlati