2017-05-21 3 views
1

Ziel ist es, mit der Maus zweimal auf ein Bild zu klicken und 2 Koordinaten abzurufen. Der Code dafür lautet:Matplotlib erfasst falsche Mauskoordinaten

class ImageListener(object): 

def __init__(self): 
    self.coordinates = [] 

def onclick(self, event): 
    print(event.x, event.y) 
    self.coordinates.extend([event.x, event.y]) 

def show_image(self, img, close=True): 
    fig = plt.figure() 
    ax = fig.add_subplot(111) 
    ax.imshow(img) 
    cid = fig.canvas.mpl_connect('button_press_event', self.onclick) 
    while len(self.coordinates) < 3: 
     plt.waitforbuttonpress(0) 
    if close: 
     plt.close(fig) 

    fig.canvas.mpl_disconnect(cid) 

Die Koordinaten, die erfasst werden, sind jedoch falsch. Im folgenden Bild befindet sich meine Maus bei (700,333) als ich geklickt habe. (Maus verschwand während des Screenshots). Stattdessen wird (514, 154) erfasst. hier

enter image description here

Was bin ich?

Antwort

0

Die Sache ist, dass Sie event.x und event.y verwenden:

  • x: x-Position - Pixel aus

    der Leinwand links
  • y: y-Position - Pixel von der Unterseite der Leinwand

Wenn Sie die Koordinatin der Maus in Datenkoordinaten möchten, sollten Sie verwenden:

  • xdata: x Koord der Maus in Daten Koord
  • YDATA: Y-Koord der Maus in Daten Koord

doc verweisen.

Verwandte Themen