Skip to main content

labelroi

A Qt-based application for drawing and labeling polygon/polyline ROIs (Regions of Interest) on images and videos.

Features

  • Image and Video Support: Load images (PNG, JPG, JPEG, BMP, TIFF) or MP4 videos (displays first frame)
  • ROI Drawing: Draw polygon ROIs by clicking vertices, or polylines for open shapes
  • ROI Naming: Double-click on any ROI to add or edit its name
  • Smooth Navigation: Pan and zoom with mouse/trackpad gestures
  • ROI Management: View ROI properties, delete individual ROIs, or clear all
  • YAML Export/Import: Save ROIs to YAML files for later use or sharing
  • Geometry Analysis: Automatic calculation of area, perimeter, and vertex count using Shapely

Installation

Prerequisites

Install uv if you haven't already:

# On macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# Or with pip
pip install uv

Install from Source

  1. Clone the repository:
git clone https://github.com/talmolab/labelroi.git
cd labelroi
  1. Install the package using uv:
uv pip install -e .

This will install labelroi and all its dependencies in editable mode.

Usage

Command Line Interface

Launch the application with:

labelroi

Or open with a specific image/video:

labelroi path/to/image.png
labelroi path/to/video.mp4

Drawing ROIs

  1. Click "Start Drawing ROI" button
  2. Left-click to add vertices to your polygon
  3. Either:
    • Click on the first vertex (green dot) to close the polygon
    • Right-click to finish as a polyline (open shape)
  4. Repeat to draw multiple ROIs (each gets a unique color)

ROI Naming

  • Double-click on any ROI to add or edit its name
  • Names appear as white labels on the ROI
  • Clear the name to remove the label

Navigation Controls

Mouse/Trackpad:

  • Scroll wheel: Zoom in/out
  • Pinch gesture: Zoom in/out
  • Middle-click + drag: Pan around
  • Ctrl + Left-click + drag: Pan around
  • Alt + Double-click: Reset zoom

Keyboard:

  • Arrow keys or WASD: Pan
  • +/=: Zoom in
  • -: Zoom out
  • 0 or Home: Reset zoom
  • F1 or H: Show help

Saving and Loading ROIs

ROIs are automatically saved with the same name as your image/video file with a .rois.yml suffix:

  • Image: my_image.png → ROIs: my_image.rois.yml
  • Video: my_video.mp4 → ROIs: my_video.rois.yml

Click "Save ROIs to YAML" to save your ROIs. They will automatically load when you open the same image/video again.

YAML Format

The ROIs are saved in a human-readable YAML format:

image_file: /path/to/image.png
roi_count: 2
rois:
  - id: 1
    name: "Region A"
    type: polygon
    coordinates:
      - [100.5, 200.3]
      - [150.2, 250.7]
      - [100.8, 300.1]
    color: "#1f77b4"
    properties:
      vertex_count: 3
      perimeter: 172.5
      area: 1250.3
  - id: 2
    name: "Line B"
    type: polyline
    coordinates:
      - [200.0, 100.0]
      - [300.0, 150.0]
    color: "#ff7f0e"
    properties:
      vertex_count: 2
      perimeter: 111.8

Development

Running from Source

# Clone and enter directory
git clone https://github.com/talmolab/labelroi.git
cd labelroi

# Install in development mode
uv pip install -e .

# Run the application
python src/labelroi/labelroi.py

Dependencies

  • numpy: Array operations
  • matplotlib: Visualization and plotting
  • shapely: Geometry operations
  • qtpy: Qt compatibility layer
  • PyQt5: Qt backend (can also use PyQt6, PySide2, or PySide6)
  • sleap-io: Video file loading
  • PyYAML: YAML file I/O

License

See LICENSE file for details.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Issues

If you encounter any problems, please file an issue at https://github.com/talmolab/labelroi/issues

Metadata

Release files for labelroi 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for labelroi 0.1.0
File Size Uploaded
labelroi-0.1.0.tar.gz 14.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for labelroi 0.1.0
File Interpreter ABI Platform
labelroi-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 29.6 kB

Release files / labelroi-0.1.0.tar.gz

Download URL labelroi-0.1.0.tar.gz
Size 14.2 kB
Tags Source
SHA-256 checksum
How to use checksums
de537cd8af29894c61bb9fb07c8ebf109610e2535a8f865e9ce8382e9712688c
BLAKE2b-256 checksum
How to use checksums
0671e8542f5140e31a29d6765b075b47e5ddb18f8fd1df788f5874d1197fea32
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.5.14

Release files / labelroi-0.1.0-py3-none-any.whl

Download URL labelroi-0.1.0-py3-none-any.whl
Size 15.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a0b548888cc71be29ffc4bafc772b60e99b67b97580b800746bd34aa34952bbd
BLAKE2b-256 checksum
How to use checksums
f2602a951a8b00f8260c654e43702a92724f95a1d5b8f5fe9a7eaf6f5abbcf07
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.5.14

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page