mirror of
https://github.com/wassname/scikit-image.git
synced 2026-07-15 11:25:53 +08:00
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:
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user