mirror of
https://github.com/wassname/scikit-image.git
synced 2026-07-01 03:09:01 +08:00
35 lines
810 B
Python
35 lines
810 B
Python
"""
|
|
====================
|
|
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
|
|
|
|
|
|
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)
|
|
|
|
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()
|