diff --git a/skimage/viewer/plugins/labelplugin.py b/skimage/viewer/plugins/labelplugin.py index d224811c..b3c289f1 100644 --- a/skimage/viewer/plugins/labelplugin.py +++ b/skimage/viewer/plugins/labelplugin.py @@ -21,6 +21,7 @@ class LabelPainter(Plugin): self._radius_widget = Slider('radius', low=1, high=max_radius, value=5, value_type='int', ptype='plugin') labels = [str(i) for i in range(6)] + labels[0] = 'Erase' self._label_widget = ComboBox('label', labels, ptype='plugin') self.add_widget(self._radius_widget) self.add_widget(self._label_widget) diff --git a/viewer_examples/plugins/watershed_demo.py b/viewer_examples/plugins/watershed_demo.py index 7119b7f2..683e8a30 100644 --- a/viewer_examples/plugins/watershed_demo.py +++ b/viewer_examples/plugins/watershed_demo.py @@ -4,8 +4,17 @@ from skimage import data from skimage import filter from skimage import morphology from skimage.viewer import ImageViewer +from skimage.viewer.widgets import history from skimage.viewer.plugins.labelplugin import LabelPainter +class OKCancelButtons(history.OKCancelButtons): + + def update_original_image(self): + # OKCancelButtons updates the original image with the filtered image + # by default. Override this method to update the overlay. + self.plugin._show_watershed() + self.plugin.close() + class WatershedPlugin(LabelPainter): @@ -13,19 +22,21 @@ class WatershedPlugin(LabelPainter): helpstr = ("Watershed plugin", "----------------", "Use mouse to paint each region with a different label.", - "Press enter to display segmented image.") + "Press OK to display segmented image.") return '\n'.join(helpstr) - def on_enter(self, overlay): + def _show_watershed(self): viewer = self.image_viewer edge_image = filter.sobel(viewer.image) - labels = morphology.watershed(edge_image, overlay) + labels = morphology.watershed(edge_image, self.paint_tool.overlay) viewer.ax.imshow(labels, cmap=plt.cm.jet, alpha=0.5) viewer.redraw() - self.close() image = data.coins() +plugin = WatershedPlugin() +plugin += OKCancelButtons() + viewer = ImageViewer(image) -viewer += WatershedPlugin() +viewer += plugin viewer.show()