2016-01-20 12 views
7

Mam float x/y tablice, które posiadają koło ośrodków.Koła rysunkowe na obrazie z matplotlib i numpy

import matplotlib.pylab as plt 
import numpy as np 
npX = np.asarray(X) 
npY = np.asarray(Y) 
plt.imshow(img) 
// TO-DO 
plt.show() 

chcę pokazać kręgi na moim obrazie za pomocą tego ośrodki. Jak mogę to osiągnąć?

+2

Możliwe duplikat [wykreślić krąg pyplot] (http://stackoverflow.com/questions/9215658/plot-a-circle-with-pyplot) – kazemakase

+0

jesteś pewien? .. – orkan

+0

Całkiem tak. Odpowiedzi na to pytanie pokazują, jak rysować kręgi, o co dokładnie prosiłeś :) – kazemakase

Odpowiedz

10

Możesz to zrobić z łatką matplotlib.patches.Circle.

Na przykład, musimy przechodzić przez macierze X i Y, a następnie utworzyć plaster dla każdej współrzędnej.

Oto przykład umieszczenie koła na górze obrazka (z matplotlib.cbook)

import matplotlib.pyplot as plt 
import numpy as np 
from matplotlib.patches import Circle 

# Get an example image 
import matplotlib.cbook as cbook 
image_file = cbook.get_sample_data('grace_hopper.png') 
img = plt.imread(image_file) 

# Make some example data 
x = np.random.rand(5)*img.shape[1] 
y = np.random.rand(5)*img.shape[0] 

# Create a figure. Equal aspect so circles look circular 
fig,ax = plt.subplots(1) 
ax.set_aspect('equal') 

# Show the image 
ax.imshow(img) 

# Now, loop through coord arrays, and create a circle at each x,y pair 
for xx,yy in zip(x,y): 
    circ = Circle((xx,yy),50) 
    ax.add_patch(circ) 

# Show the image 
plt.show() 

enter image description here

+0

dziękuję świetny przykład – orkan

+0

to kręgi w działce, a nie na obrazie. img nie zostanie zmieniony –

+0

@andrewmatuk: co masz na myśli? Jeśli zapiszesz obrazek za pomocą 'savefig', koła również zostaną zapisane – tom

Powiązane problemy