ENH: Improve usability of watershed_demo.

* Replace 0 label with 'Erase'
* Use OK button instead of enter key to calculate watershed.
This commit is contained in:
Tony S Yu
2013-01-24 21:47:42 -06:00
parent f517eaa0e7
commit 230fefa748
2 changed files with 17 additions and 5 deletions
+1
View File
@@ -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)
+16 -5
View File
@@ -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()