Edit2D#
Interactive crop, pad, and mask tool for 2D images.
Usage#
import numpy as np
from quantem.widget import Edit2D
image = np.random.rand(256, 256).astype(np.float32)
# Crop mode (default)
w = Edit2D(image)
w # display, drag crop rectangle interactively
cropped = w.result # get cropped NumPy array
# Mask mode — paint a binary mask
w = Edit2D(image, mode="mask")
masked = w.result # masked pixels set to fill_value
# Padding — extend bounds beyond image
w = Edit2D(image, bounds=(-10, -10, 266, 266), fill_value=0.0)
Features#
Crop mode – Drag a rectangle to crop; extends beyond image bounds for padding
Mask mode – Paint a binary mask with brush tool
Multi-image – Apply the same crop/mask to multiple images
Fill value – Configurable padding value for out-of-bounds regions
Scale bar – Calibrated when
pixel_sizeis setControl customizer – Hover the widget header to reveal a menu for hiding control groups
Tool lock/hide –
disable_*/hide_*API for shared read-only workflows
Methods#
w = Edit2D(image)
# Replace data (preserves crop/mask settings)
w.set_image(new_image)
# Export
w.save_image("cropped.png")
Properties#
w = Edit2D(image, bounds=(10, 20, 200, 220))
w.result # Cropped/masked NumPy array
w.crop_bounds # (top, left, bottom, right) tuple
w.crop_size # (height, width) of output
w.mask # Boolean mask array (mask mode)
Control Groups#
# Initial visible control groups
w = Edit2D(
image,
show_display_controls=True,
show_edit_controls=True,
show_histogram=False,
)
# Lock selected interactions (controls remain visible but disabled)
w_locked = Edit2D(
image,
disable_edit=True,
disable_navigation=True,
disable_export=True,
)
# Hide selected groups (also interaction-locked)
w_hidden = Edit2D(
image,
hide_histogram=True,
hide_stats=True,
)
State Persistence#
w = Edit2D(image, cmap="viridis", bounds=(10, 20, 200, 220))
w.summary() # Print human-readable state
w.state_dict() # Get all settings as a dict
w.save("state.json") # Save versioned envelope JSON file
# Restore from file or dict
w2 = Edit2D(image, state="state.json")
Examples#
API Reference#
See quantem.widget.Edit2D for full documentation.