diff --git a/skimage/viewer/plugins/base.py b/skimage/viewer/plugins/base.py index fd7cb005..d5db0f5c 100644 --- a/skimage/viewer/plugins/base.py +++ b/skimage/viewer/plugins/base.py @@ -84,7 +84,12 @@ class Plugin(QtGui.QDialog): arguments = [self._get_value(a) for a in self.arguments] kwargs = dict([(name, self._get_value(a)) for name, a in self.keyword_arguments.iteritems()]) - self.image_filter(*arguments, **kwargs) + filtered = self.image_filter(*arguments, **kwargs) + self.display_filtered_image(filtered) + + def display_filtered_image(self, image): + """Override this method to display image on image viewer.""" + pass def _get_value(self, param): return param if not hasattr(param, 'val') else param.val() @@ -102,6 +107,9 @@ class Plugin(QtGui.QDialog): self.layout.addWidget(widget, self.row, 0) self.row += 1 + def __iadd__(self, widget): + self.add_widget(widget) + def update_plugin(self, name, value): setattr(self, name, value) diff --git a/skimage/viewer/plugins/canny.py b/skimage/viewer/plugins/canny.py index b161fd87..154fb6da 100644 --- a/skimage/viewer/plugins/canny.py +++ b/skimage/viewer/plugins/canny.py @@ -9,7 +9,7 @@ class CannyPlugin(OverlayPlugin): name = 'Canny Filter' def __init__(self, *args, **kwargs): - super(CannyPlugin, self).__init__(**kwargs) + super(CannyPlugin, self).__init__(image_filter=canny, **kwargs) self.add_widget(Slider('sigma', 0, 5, update_on='release')) self.add_widget(Slider('low threshold', 0, 255, update_on='release')) @@ -20,7 +20,3 @@ class CannyPlugin(OverlayPlugin): super(CannyPlugin, self).attach(image_viewer) # Update image overlay to default slider values. self.filter_image() - - def image_filter(self, *args, **kwargs): - image = canny(*args, **kwargs) - self.overlay = image diff --git a/skimage/viewer/plugins/overlayplugin.py b/skimage/viewer/plugins/overlayplugin.py index 3b051e1a..3aa5a445 100644 --- a/skimage/viewer/plugins/overlayplugin.py +++ b/skimage/viewer/plugins/overlayplugin.py @@ -45,6 +45,10 @@ class OverlayPlugin(Plugin): self._overlay_plot.set_array(image) self.image_viewer.redraw() + def display_filtered_image(self, image): + """Display image over image in viewer.""" + self.overlay = image + def closeEvent(self, event): self.overlay = None super(OverlayPlugin, self).closeEvent(event)