mirror of
https://github.com/wassname/scikit-image.git
synced 2026-07-31 12:41:20 +08:00
Updates to get all tools tested and working
This commit is contained in:
committed by
Steven Silvester
parent
1775e959d6
commit
778f62de6a
@@ -46,11 +46,14 @@ class CanvasToolBase(object):
|
||||
"""
|
||||
return not self.active
|
||||
|
||||
def hit_test(self, event):
|
||||
return False
|
||||
|
||||
def redraw(self):
|
||||
self.viewer.redraw()
|
||||
|
||||
def set_visible(self, val):
|
||||
for artist in self._artists:
|
||||
for artist in self.artists:
|
||||
artist.set_visible(val)
|
||||
|
||||
def on_key_press(self, event):
|
||||
|
||||
@@ -37,7 +37,8 @@ class LineTool(CanvasToolBase):
|
||||
def __init__(self, viewer, on_move=None, on_release=None, on_enter=None,
|
||||
maxdist=10, line_props=None,
|
||||
**kwargs):
|
||||
super(LineTool, self).__init__(ax, on_move=on_move, on_enter=on_enter,
|
||||
super(LineTool, self).__init__(viewer, on_move=on_move,
|
||||
on_enter=on_enter,
|
||||
on_release=on_release, **kwargs)
|
||||
|
||||
props = dict(color='r', linewidth=1, alpha=0.4, solid_capstyle='butt')
|
||||
@@ -153,7 +154,7 @@ class ThickLineTool(LineTool):
|
||||
|
||||
def __init__(self, viewer, on_move=None, on_enter=None, on_release=None,
|
||||
on_change=None, maxdist=10, line_props=None):
|
||||
super(ThickLineTool, self).__init__(ax,
|
||||
super(ThickLineTool, self).__init__(viewer,
|
||||
on_move=on_move,
|
||||
on_enter=on_enter,
|
||||
on_release=on_release,
|
||||
@@ -192,16 +193,14 @@ class ThickLineTool(LineTool):
|
||||
|
||||
|
||||
if __name__ == '__main__': # pragma: no cover
|
||||
import matplotlib.pyplot as plt
|
||||
from skimage import data
|
||||
from skimage.viewer import ImageViewer
|
||||
|
||||
image = data.camera()
|
||||
|
||||
f, ax = plt.subplots()
|
||||
ax.imshow(image, interpolation='nearest')
|
||||
viewer = ImageViewer(image)
|
||||
h, w = image.shape
|
||||
|
||||
# line_tool = LineTool(ax)
|
||||
line_tool = ThickLineTool(ax)
|
||||
line_tool = ThickLineTool(viewer)
|
||||
line_tool.end_points = ([w/3, h/2], [2*w/3, h/2])
|
||||
plt.show()
|
||||
viewer.show()
|
||||
|
||||
@@ -44,7 +44,8 @@ class PaintTool(CanvasToolBase):
|
||||
def __init__(self, viewer, overlay_shape, radius=5, alpha=0.3,
|
||||
on_move=None, on_release=None, on_enter=None,
|
||||
rect_props=None):
|
||||
super(PaintTool, self).__init__(ax, on_move=on_move, on_enter=on_enter,
|
||||
super(PaintTool, self).__init__(viewer, on_move=on_move,
|
||||
on_enter=on_enter,
|
||||
on_release=on_release)
|
||||
|
||||
props = dict(edgecolor='r', facecolor='0.7', alpha=0.5, animated=True)
|
||||
@@ -65,7 +66,7 @@ class PaintTool(CanvasToolBase):
|
||||
|
||||
# Note that the order is important: Redraw cursor *after* overlay
|
||||
self.artists = [self._overlay_plot, self._cursor]
|
||||
view.add_tool(self)
|
||||
viewer.add_tool(self)
|
||||
|
||||
@property
|
||||
def label(self):
|
||||
@@ -201,10 +202,10 @@ class CenteredWindow(object):
|
||||
if __name__ == '__main__': # pragma: no cover
|
||||
np.testing.rundocs()
|
||||
from skimage import data
|
||||
from skimage.viewer import ImageViewer
|
||||
|
||||
image = data.camera()
|
||||
|
||||
f, ax = plt.subplots()
|
||||
ax.imshow(image, interpolation='nearest')
|
||||
paint_tool = PaintTool(ax, image.shape)
|
||||
plt.show()
|
||||
viewer = ImageViewer(image)
|
||||
paint_tool = PaintTool(viewer, image.shape)
|
||||
viewer.show()
|
||||
|
||||
@@ -41,7 +41,7 @@ class RectangleTool(CanvasToolBase, RectangleSelector):
|
||||
|
||||
def __init__(self, viewer, on_move=None, on_release=None, on_enter=None,
|
||||
maxdist=10, rect_props=None):
|
||||
CanvasToolBase.__init__(self, ax, on_move=on_move,
|
||||
CanvasToolBase.__init__(self, viewer, on_move=on_move,
|
||||
on_enter=on_enter, on_release=on_release)
|
||||
|
||||
props = dict(edgecolor=None, facecolor='r', alpha=0.15)
|
||||
@@ -67,11 +67,11 @@ class RectangleTool(CanvasToolBase, RectangleSelector):
|
||||
props = dict(mec=props['edgecolor'])
|
||||
self._corner_order = ['NW', 'NE', 'SE', 'SW']
|
||||
xc, yc = self.corners
|
||||
self._corner_handles = ToolHandles(ax, xc, yc, marker_props=props)
|
||||
self._corner_handles = ToolHandles(self.ax, xc, yc, marker_props=props)
|
||||
|
||||
self._edge_order = ['W', 'N', 'E', 'S']
|
||||
xe, ye = self.edge_centers
|
||||
self._edge_handles = ToolHandles(ax, xe, ye, marker='s',
|
||||
self._edge_handles = ToolHandles(self.ax, xe, ye, marker='s',
|
||||
marker_props=props)
|
||||
|
||||
self.artists = [self._rect,
|
||||
@@ -202,13 +202,12 @@ class RectangleTool(CanvasToolBase, RectangleSelector):
|
||||
|
||||
|
||||
if __name__ == '__main__': # pragma: no cover
|
||||
import matplotlib.pyplot as plt
|
||||
from skimage.viewer import ImageViewer
|
||||
from skimage import data
|
||||
|
||||
f, ax = plt.subplots()
|
||||
ax.imshow(data.camera(), interpolation='nearest')
|
||||
viewer = ImageViewer(data.camera())
|
||||
|
||||
rect_tool = RectangleTool(ax)
|
||||
plt.show()
|
||||
rect_tool = RectangleTool(viewer)
|
||||
viewer.show()
|
||||
print("Final selection:")
|
||||
rect_tool.callback_on_enter(rect_tool.extents)
|
||||
|
||||
@@ -371,7 +371,7 @@ class ImageViewer(QtGui.QMainWindow):
|
||||
self.status_message('')
|
||||
|
||||
def add_tool(self, tool):
|
||||
if self.blit:
|
||||
if self.useblit:
|
||||
self._blit_manager.artists.extend(tool.artists)
|
||||
self._tools.append(tool)
|
||||
self._event_manager.attach(tool)
|
||||
|
||||
Reference in New Issue
Block a user