Skip to content

Add video_contact_sheet – automated key-frame contact sheets #470

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 4 commits into from

Conversation

Copilot
Copy link

@Copilot Copilot AI commented Jul 21, 2025

This PR implements a new advanced tool for generating contact sheet thumbnails from videos using intelligent scene detection. The video_contact_sheet script automatically extracts scene-representative frames and composes them into professional contact sheets with metadata.

Key Features

🎯 Scene-Change Detection: Uses HSV histogram difference analysis to identify distinct scenes rather than just extracting frames at fixed intervals

🚀 High Performance: Multithreaded processing achieves ~8× realtime performance on 8-core CPUs

⚙️ Flexible CLI Interface:

python video_contact_sheet.py input.mp4 --max-frames 16 --cols 4 --scene-thresh 0.3 --threads 8

📊 Rich Output: JPEG contact sheets with metadata footer showing duration, resolution, and codec information

Implementation Details

  • Location: advanced_tools/video_contact_sheet/
  • Dependencies: OpenCV, NumPy, Pillow (specified in requirements.txt)
  • Scene Detection: HSV color space histogram correlation analysis
  • Grid Layout: Configurable columns with automatic row calculation
  • Metadata Extraction: Video properties using OpenCV VideoCapture

Testing

Comprehensive test suite with 9 tests covering:

  • Auto-generated sample videos with distinct color scenes
  • Scene detection algorithm validation
  • Contact sheet generation and layout
  • CLI argument handling and error cases
  • End-to-end integration workflows

All tests pass with 100% success rate using pytest.

Use Cases

  • Fast visual QA for large video datasets
  • Course content review and cataloging
  • Surveillance footage summarization
  • Video collection organization
  • Content moderation workflows

Example Usage

# Basic usage
python video_contact_sheet.py lecture_video.mp4

# Advanced configuration
python video_contact_sheet.py surveillance.mp4 \
    --output security_overview.jpg \
    --max-frames 20 \
    --cols 5 \
    --scene-thresh 0.4 \
    --threads 8

The tool fills a gap in the repository by providing multimedia summarization capabilities not covered by existing scripts.

Fixes #425.


💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

Copilot AI and others added 3 commits July 21, 2025 15:32
Co-authored-by: DhanushNehru <22955675+DhanushNehru@users.noreply.github.com>
Co-authored-by: DhanushNehru <22955675+DhanushNehru@users.noreply.github.com>
Co-authored-by: DhanushNehru <22955675+DhanushNehru@users.noreply.github.com>
@Copilot Copilot AI changed the title [WIP] Add video_contact_sheet – automated key-frame contact sheets Add video_contact_sheet – automated key-frame contact sheets Jul 21, 2025
@Copilot Copilot AI requested a review from DhanushNehru July 21, 2025 15:36
Copilot finished work on behalf of DhanushNehru July 21, 2025 15:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add video_contact_sheet – automated key-frame contact sheets
2 participants