Proprio come nel Esempio di MATLAB a cui ti sei collegato, devi specificare l'estensione desiderata dell'immagine quando chiami allo imshow
.
Per impostazione predefinita, matplotlib e MATLAB posizionano entrambi l'angolo in alto a sinistra dell'immagine, vanno giù e verso destra da lì e impostano ciascun pixel come un quadrato 1x1 nello spazio delle coordinate. Questo è ciò che sta facendo la tua immagine.
È possibile controllare questo con il parametro extent
che assume la forma di un elenco [left, right, bottom, top]
.
Non usando misura assomiglia a questo:
import matplotlib.pyplot as plt
img = plt.imread("airlines.jpg")
fig, ax = plt.subplots()
ax.imshow(img)

Si può vedere che abbiamo un 1600 x 1200 di Samuel L. Jackson ottenere, francamente, un po 'seccato con il serpente a bordo della sua volo aereo
Ma se vogliamo tracciare una linea che va da 0 a 300 in entrambe le dimensioni su questo, siamo in grado di fare proprio questo:
fig, ax = plt.subplots()
x = range(300)
ax.imshow(img, extent=[0, 400, 0, 300])
ax.plot(x, x, '--', linewidth=5, color='firebrick')

non so se la linea sarà aiutare il signor Jackson con il suo problema serpente. Per lo meno, non renderà le cose più difficili.
'imshow' può richiedere molti più argomenti che consentono di specificare dove è posizionata l'immagine e la sua estensione nello spazio delle coordinate. Per impostazione predefinita, l'angolo in alto a sinistra è posizionato su (0, 0) e ogni pixel è 1x1 unità in larghezza e altezza. –