2017-03-14 6 views
1

Ich versuche, Köcher Gradientenpfeile auf ein Bild zu überlagern, aber da die Herkunft Standorte sind anders, sie nicht richtig aussehen. Wie würde ich das beheben?überlagern Matplotlib Köcher auf Bild

Dies ist ein Beispiel. Das Bild auf der linken Seite sind die Gradienten, die ich erwarte, aber sobald ich sie auf ein Bild zeichne, zeigen sie in die falsche Richtung wegen der Änderung der Ursprungsort.

test_array = np.array([[ 0., 0., 0., 0., 0.], 
         [ 0., 64., 128., 64., 0.], 
         [ 0., 127., 255., 127., 0.], 
         [ 0., 64., 127., 64., 0.], 
         [ 0., 0., 0., 0., 0.]]) 

dy, dx = np.gradient(test_array) 
plt.imshow(test_array) 
plt.quiver(dx, dy) 
plt.show() 

enter image description here enter image description here

Antwort

2

Wenn Sie die gleiche Handlung Orientierung haben wollen, die Sie mit Plotten die Pfeile allein erhalten, können Sie die origin of the image von origin='lower' Zugabe zu dem imshow Aufruf ändern:

plt.imshow(test_array, origin='lower')

Wenn Sie den Bildursprung in der oberen linken Ecke behalten möchten, können Sie einfach das Verzeichnis ändern Wenn Sie plt.quiver anrufen:

dy, dx = np.gradient(test_array) 
plt.imshow(test_array) 
plt.quiver(dx, -dy) 
plt.show() 
+0

Gibt es eine Möglichkeit, den Köcher stattdessen zu ändern? Ich möchte die Koordinaten oben links behalten, da dies der Standard für Bilder ist. – waspinator

+0

@waspinator - Ich habe eine zweite Antwort hinzugefügt, die die Ausrichtung des Bildes oben links hält. – Craig

Verwandte Themen