2016-10-12 8 views
0

Ich muss die Cursorposition nach einem Klick auf das Bild erhalten, um die entsprechenden Pixelkoordinaten zu erhalten. Das habe ich bisher gemacht, das funktioniert solange ich auf den leeren Teil der Figur klicke (wenn ich auf das Bild klicke, wird der Callback nicht ausgelöst).So erhalten Sie die Cursorposition in einem Bild mit Matlab

image(my_image); 
set(gca, 'ButtonDownFcn', @click); 

function click(o, event) 
    pt = get(o, 'CurrentPoint') 
end 

So nachher, habe ich versucht, dieses:

image(my_image, 'ButtonDownFcn', @click); 

function click(o, event) 
    pt = get(o, 'CurrentPoint') 
end 

Aber dann, es sagt mir, dass die Bildklasse kein Feld ‚Current‘ genannt enthält. Ich nehme an, dass ich ein paar Achsen aus dem Bild holen muss, aber ich weiß nicht, wie ich das machen soll.

Antwort

0

Ich musste ein ähnliches Problem zuvor lösen.

Wenn Sie einen leeren Rückruf wie folgt aus dem gui hinzufügen, werden die Cursor-Position verfolgen

function figure1_WindowButtonMotionFcn(~, ~, ~) 

Dann wird der figure1 Griff sollte eine Eigenschaft haben currentPoint, die die Position der Maus zu beschreiben. Wenn Sie eine Click-Ereignis Funktion schreiben, die der Zugang zum figure1 Griff, so etwas wie dies hat:

image(my_image, 'ButtonwDownFcn', ... 
    @(hObject,eventdata)myGui('click',hObject,eventdata,guidata(hObject)) 

die folgende Zeile in die Mausposition für den Zugriff auf

mouseLocation = get(handles.figure1, 'currentPoint'); 

Dann haben Sie zu Überführen Sie die Mausposition in die Pixelposition, indem Sie die Position der Achsen in der Abbildung verwenden.

0

Nun, ich fand die Lösung für mein Problem. Sie müssen nur eine Achse für das Bild angeben und sie über das Attribut "Parent" abrufen.

im = image(0, 0, my_image); 
set(im, 'ButtonDownFcn', @click); 

function click(o, event) 
    pt = get(get(o, 'Parent'), 'CurrentPoint') 
end 
Verwandte Themen