Files
scikit-image/doc/examples/plot_shapes.py
T
François Boulogne 088b2995a9 DOC: split non-AA/AA
2013-10-02 17:25:16 +02:00

92 lines
1.8 KiB
Python

"""
======
Shapes
======
This example shows how to draw several different shapes:
* line
* polygon
* circle
* ellipse
"""
import numpy as np
import matplotlib.pyplot as plt
from skimage.draw import line, polygon, circle, \
circle_perimeter, circle_perimeter_aa, \
ellipse, ellipse_perimeter
import numpy as np
import math
img = np.zeros((500, 500, 3), dtype=np.uint8)
# draw line
rr, cc = line(120, 123, 20, 400)
img[rr,cc,0] = 255
# fill polygon
poly = np.array((
(300, 300),
(480, 320),
(380, 430),
(220, 590),
(300, 300),
))
rr, cc = polygon(poly[:,0], poly[:,1], img.shape)
img[rr,cc,1] = 255
# fill circle
rr, cc = circle(200, 200, 100, img.shape)
img[rr,cc,:] = (255, 255, 0)
# fill ellipse
rr, cc = ellipse(300, 300, 100, 200, img.shape)
img[rr,cc,2] = 255
# circle
rr, cc = circle_perimeter(120, 400, 15)
img[rr, cc, :] = (255, 0, 0)
# ellipses
rr, cc = ellipse_perimeter(120, 400, 60, 20, orientation=math.pi / 4.)
img[rr, cc, :] = (255, 0, 255)
rr, cc = ellipse_perimeter(120, 400, 60, 20, orientation=-math.pi / 4.)
img[rr, cc, :] = (0, 0, 255)
rr, cc = ellipse_perimeter(120, 400, 60, 20, orientation=math.pi / 2.)
img[rr, cc, :] = (255, 255, 255)
plt.imshow(img)
plt.show()
"""
Anti-aliasing drawing for:
* line
* circle
"""
import numpy as np
import matplotlib.pyplot as plt
from skimage.draw import line_aa, \
circle_perimeter_aa
import numpy as np
img = np.zeros((100, 100), dtype=np.uint8)
# anti-aliased line
rr, cc, val = line_aa(12, 12, 20, 50)
img[rr, cc] = val * 255
# anti-aliased circle
rr, cc, val = circle_perimeter_aa(60, 40, 30)
img[rr, cc] = val * 255
plt.imshow(img, cmap=plt.cm.gray, interpolation='nearest')
plt.title('Anti-aliasing')
plt.show()