Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 48 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# VideoTemporalLabelingTool

__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# Virtual environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# IDE
.vscode/
.idea/
*.swp
*.swo
*~

# OS
.DS_Store
Thumbs.db

# Project specific
*.csv
!example_labels.csv
resource/test_frame.jpg
52 changes: 52 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [2.0.0] - 2026-02-25

### Added
- Python 3.12 LTS compatibility
- Type hints throughout the codebase
- Modern project structure with `src/` layout
- `pyproject.toml` for modern Python packaging
- `.gitignore` with comprehensive rules
- Multi-language README support (English, Chinese, Japanese)
- Entry point `vtlt` command for easy execution
- Support for additional video formats (.mov, .mkv)
- Development dependencies (pytest, black, ruff, mypy)

### Changed
- Updated wxPython from 4.0.7.post2 to 4.2.0+
- Updated pandas from 0.25.3 to 2.0.0+
- Updated opencv-python from 4.2.0.32 to 4.9.0+
- Migrated from `.format()` to f-strings throughout
- Improved docstrings with Google style
- Refactored code to use `pathlib.Path` instead of `os.path`
- Renamed internal variables to snake_case for consistency
- Updated minimum Python version to 3.9

### Removed
- Support for Python < 3.9
- Deprecated `depricated` directory contents

### Fixed
- Proper handling of empty video lists
- Frame boundary checks to prevent overflow
- Resource path resolution for packaged installation
- Exception handling in main entry point

## [1.1.0] - 2020-07-13

### Added
- Initial release
- Basic video temporal labeling functionality
- wxPython GUI interface
- CSV export for labels
- Support for .avi, .mp4, .wav formats
- FPS selection menu (5, 10, 15, 20, 30)

[2.0.0]: https://github.com/jokebear-bot/VideoTemporalLabelingTool/compare/v1.1.0...v2.0.0
[1.1.0]: https://github.com/jokebear-bot/VideoTemporalLabelingTool/releases/tag/v1.1.0
94 changes: 73 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,84 @@
# Video Temporal Labeling Tools
This is the repo for temporal video data labeling. It would record temporal labels for video and store the corresponding start and end frame index.
![ui](./UI.png)
# Video Temporal Labeling Tool

## Required Package
> Python == 3.7.0
> wxpython == 4.0.7.post2
> pandas == 0.25.3
> opencv-python == 4.2.0.32
A desktop application for temporal video data labeling. It records temporal labels for videos and stores the corresponding start and end frame indices.

![UI](./src/vtlt/resource/main.jpg)

## Requirements

- Python >= 3.9 (Python 3.12 recommended)
- wxPython >= 4.2.0
- pandas >= 2.0.0
- opencv-python >= 4.9.0
- numpy >= 1.24.0

## Installation

## Get Started
```bash
# clone the repo
git clone git@github.com:Catosine/VideoTemporalLabelingTool.git
# Clone the repository
git clone https://github.com/jokebear-bot/VideoTemporalLabelingTool.git

# go to directory
# Navigate to the directory
cd VideoTemporalLabelingTool

# install required packages
# Install dependencies
pip install -r requirements.txt

# or you may go with simple version
pip install wxpython
pip install pandas
pip install opencv-python
# Or install as a package
pip install -e .
```

## Usage

# run the code
python3 app.py
### Run as module
```bash
python -m vtlt
```

## License
This repo is under the MIT license.
### Run directly
```bash
python src/vtlt/app.py
```

## Features

- 🎥 Video frame extraction and display
- 🏷️ Temporal labeling with start/end frame selection
- 📊 CSV export for annotations
- 🖥️ Cross-platform desktop GUI (Windows, macOS, Linux)
- ⌨️ **Keyboard shortcuts** for efficient navigation (see below)

## Keyboard Shortcuts

| Key | Action |
|-----|--------|
| `←` (Left Arrow) | Previous frame (-1) |
| `→` (Right Arrow) | Next frame (+1) |
| `Shift + ←` | Previous N frames (-FPI) |
| `Shift + →` | Next N frames (+FPI) |
| `S` | Select start frame |
| `E` | Select end frame |
| `Ctrl + S` | Save label |

## Project Structure

```
VideoTemporalLabelingTool/
├── src/vtlt/ # Main package
│ ├── __init__.py
│ ├── __main__.py # Entry point
│ ├── app.py # GUI application
│ ├── service.py # Business logic
│ └── resource/ # Static resources
├── pyproject.toml # Project configuration
├── requirements.txt # Dependencies
└── README.md # This file
```

## Changelog

See [CHANGELOG.md](./CHANGELOG.md) for version history.

## License

This project is licensed under the MIT License.
Loading