License: OTHER
import matplotlib.pyplot as plt12from skimage import data3from skimage import filter4from skimage import morphology5from skimage.viewer import ImageViewer6from skimage.viewer.widgets import history7from skimage.viewer.plugins.labelplugin import LabelPainter8910class OKCancelButtons(history.OKCancelButtons):1112def update_original_image(self):13# OKCancelButtons updates the original image with the filtered image14# by default. Override this method to update the overlay.15self.plugin._show_watershed()16self.plugin.close()171819class WatershedPlugin(LabelPainter):2021def help(self):22helpstr = ("Watershed plugin",23"----------------",24"Use mouse to paint each region with a different label.",25"Press OK to display segmented image.")26return '\n'.join(helpstr)2728def _show_watershed(self):29viewer = self.image_viewer30edge_image = filter.sobel(viewer.image)31labels = morphology.watershed(edge_image, self.paint_tool.overlay)32viewer.ax.imshow(labels, cmap=plt.cm.jet, alpha=0.5)33viewer.redraw()343536image = data.coins()37plugin = WatershedPlugin()38plugin += OKCancelButtons()3940viewer = ImageViewer(image)41viewer += plugin42viewer.show()434445