Beispiel #1
0
    def toggle_selection(self):
        """Activate selection mode"""
        if self.canvas is None:
            return
        self.disconnect()

        key = next((key for key, a in self._actions.items() if a.isChecked()),
                   None)
        if key is None or key == self._action_clicked:
            self._action_clicked = None
            if key is not None:
                self._actions[key].setChecked(False)
        else:
            if self.wand_action.isChecked() and self.wand_type == 'color':
                self.selector = PointOrRectangleSelector(
                    self.ax, self.on_rect_select, rectprops=dict(fc='none'),
                    lineprops=dict(c='none'), useblit=True)
            elif self.select_action.isChecked() and self.select_type == 'poly':
                self.selector = mwid.LassoSelector(
                    self.ax, self.on_poly_select)
            else:
                self.selector = PointOrRectangleSelector(
                    self.ax, self.on_rect_select, useblit=True)
            self.set_cursor_id = self.canvas.mpl_connect(
                'axes_enter_event', self._on_axes_enter)
            self.reset_cursor_id = self.canvas.mpl_connect(
                'axes_leave_event', self._on_axes_leave)
            self._action_clicked = next(key for key, a in self._actions.items()
                                        if a.isChecked())

        self.toolbar.set_message(self.toolbar.mode)
Beispiel #2
0
def selectLassoROI(cube: pwsdt.ICBase, displayIndex: t_.Optional[int] = None, clim: t_.Sequence = None) -> np.ndarray:
    """
    Allow the user to draw a `freehand` ROI on an image of the acquisition.

    Args:
        displayIndex: Display a particular z-slice of the array for mask drawing. If `None` then the mean along Z is displayed.

    Returns:
        An array of vertices of the polygon drawn.
    """
    Verts = [None]
    if displayIndex is None:
        displayIndex = cube.data.shape[2]//2
    fig, ax = plt.subplots()
    data = cube.data[:, :, displayIndex]
    ax.imshow(data, clim=[np.percentile(data, 1), np.percentile(data, 99)])
    fig.suptitle("Close to accept ROI")

    def onSelect(verts):
        Verts[0] = verts

    l = widgets.LassoSelector(ax, onSelect, lineprops={'color': 'r'})
    fig.show()
    while plt.fignum_exists(fig.number):
        fig.canvas.flush_events()
    return np.array(Verts[0])
def check_lasso_selector(**kwargs):
    ax = get_ax()

    def onselect(verts):
        ax._got_onselect = True
        assert verts == [(100, 100), (125, 125), (150, 150)]

    tool = widgets.LassoSelector(ax, onselect, **kwargs)
    do_event(tool, 'press', xdata=100, ydata=100, button=1)
    do_event(tool, 'onmove', xdata=125, ydata=125, button=1)
    do_event(tool, 'release', xdata=150, ydata=150, button=1)

    assert ax._got_onselect
Beispiel #4
0
def check_lasso_selector(**kwargs):
    fig, ax = plt.subplots(1, 1)
    ax = plt.gca()
    ax.plot([0, 200], [0, 200])
    ax.figure.canvas.draw()

    def onselect(verts):
        ax._got_onselect = True
        assert verts == [(100, 100), (125, 125), (150, 150)]

    tool = widgets.LassoSelector(ax, onselect, **kwargs)
    event = get_event(ax, xdata=100, ydata=100, button=1)
    tool.press(event)

    event = get_event(ax, xdata=125, ydata=125, button=1)
    tool.onmove(event)

    event = get_event(ax, xdata=150, ydata=150, button=1)
    tool.release(event)

    assert ax._got_onselect