CofeehousePy/deps/scikit-image/skimage/viewer/plugins/canny.py

31 lines
1.3 KiB
Python

import numpy as np
import skimage
from ...feature import canny
from .overlayplugin import OverlayPlugin
from ..widgets import Slider, ComboBox
class CannyPlugin(OverlayPlugin):
"""Canny filter plugin to show edges of an image."""
name = 'Canny Filter'
def __init__(self, *args, **kwargs):
super(CannyPlugin, self).__init__(image_filter=canny, **kwargs)
def attach(self, image_viewer):
image = image_viewer.image
imin, imax = skimage.dtype_limits(image, clip_negative=False)
itype = 'float' if np.issubdtype(image.dtype, np.floating) else 'int'
self.add_widget(Slider('sigma', 0, 5, update_on='release'))
self.add_widget(Slider('low threshold', imin, imax, value_type=itype,
update_on='release'))
self.add_widget(Slider('high threshold', imin, imax, value_type=itype,
update_on='release'))
self.add_widget(ComboBox('color', self.color_names, ptype='plugin'))
# Call parent method at end b/c it calls `filter_image`, which needs
# the values specified by the widgets. Alternatively, move call to
# parent method to beginning and add a call to `self.filter_image()`
super(CannyPlugin,self).attach(image_viewer)