diff --git a/doc/examples/plot_approximate_polygon.py b/doc/examples/plot_approximate_polygon.py new file mode 100644 index 00000000..8c1a126d --- /dev/null +++ b/doc/examples/plot_approximate_polygon.py @@ -0,0 +1,35 @@ +""" +==================== +Approximate Polygons +==================== + +This example shows how to approximate polygonal chains with the Douglas-Peucker +algorithm. +""" + +import numpy as np +import matplotlib.pyplot as plt +from skimage.draw import ellipse +from skimage.measure import find_contours, approximate_polygon +from skimage.morphology import erosion + +img = np.zeros((800, 800), 'int32') + +rr, cc = ellipse(250, 250, 180, 230, img.shape) +img[rr, cc] = 1 +rr, cc = ellipse(600, 600, 150, 90, img.shape) +img[rr, cc] = 1 + +plt.gray() +plt.imshow(img) + +strel = np.array([[0, 1, 0], [1, 1, 1], [0, 1, 0]], 'uint8') +for contour in find_contours(img, 0): + coords = approximate_polygon(contour, 4) + plt.plot(coords[:, 1], coords[:, 0], '-r', linewidth=2) + coords = approximate_polygon(contour, 40) + plt.plot(coords[:, 1], coords[:, 0], '-g', linewidth=2) + +plt.axis((0, 800, 0, 800)) +plt.axis('off') +plt.show()