{"id":28244426,"url":"https://github.com/till0196/video2slide_extractor","last_synced_at":"2025-06-15T11:30:48.309Z","repository":{"id":292384514,"uuid":"980736758","full_name":"Till0196/video2slide_extractor","owner":"Till0196","description":"プレゼンテーションがキャプチャされた動画ファイルからOpenCVを使ってスライドを抽出します。","archived":false,"fork":false,"pushed_at":"2025-05-09T16:28:00.000Z","size":9,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-19T08:15:38.178Z","etag":null,"topics":["opencv-python","presentation"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Till0196.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-09T16:15:38.000Z","updated_at":"2025-05-09T16:28:04.000Z","dependencies_parsed_at":"2025-05-09T17:40:09.113Z","dependency_job_id":null,"html_url":"https://github.com/Till0196/video2slide_extractor","commit_stats":null,"previous_names":["till0196/video2slide_extractor"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Till0196/video2slide_extractor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Till0196%2Fvideo2slide_extractor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Till0196%2Fvideo2slide_extractor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Till0196%2Fvideo2slide_extractor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Till0196%2Fvideo2slide_extractor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Till0196","download_url":"https://codeload.github.com/Till0196/video2slide_extractor/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Till0196%2Fvideo2slide_extractor/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259966886,"owners_count":22939317,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["opencv-python","presentation"],"created_at":"2025-05-19T08:13:39.511Z","updated_at":"2025-06-15T11:30:48.294Z","avatar_url":"https://github.com/Till0196.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Video-2-Slide-Extractor\n\nプレゼンテーションがキャプチャされた動画ファイルからOpenCVを使ってスライドを抽出します。\n\n## 説明\n\nこのツールは動画ファイルを解析し、プレゼンテーションスライドを自動的に検出して抽出します。OpenCVライブラリを使用してフレーム間の重要な変化を検出し、安定したスライド検出を実現します。\n\n## 機能\n\n- 動画ファイルからの自動スライド検出\n- 検出パラメータのカスタマイズ\n- 高品質な画像出力\n- 様々な動画フォーマットに対応\n- 重複スライドを防ぐ安定性チェック\n- 出力品質とフォーマットの設定可能\n\n## 必要条件\n\n- Python 3.7+\n- OpenCV\n- NumPy\n- Pillow\n- tomli\n\n## インストール\n\n### Dockerで実行する\n\n```bash\ndocker compose up --build\n```\n\n### ネイティブのPython環境で実行\n\n1. uvのインストール\n[公式インストールガイド](https://github.com/astral-sh/uv#installation)を参照してください。\n\n2. 依存関係のインストール\n```bash\nuv venv\nuv pip install -r requirements.txt\n```\n\n3. 依存関係の更新\n```bash\nuv pip install --upgrade -r requirements.txt\n```\n\n## 使用方法\n\n### Dockerで実行する\n\n1. `input`ディレクトリにスライドを抽出したい動画ファイルを配置\n2. `docker compose up`を実行\n3. 抽出されたスライドは`output`ディレクトリに保存されます\n\n### ネイティブのPython環境で実行\n\n```bash\npython video2slide_extractor.py \u003c動画ファイル\u003e \u003c出力ディレクトリ\u003e [設定ファイル]\n```\n\n### 使用例\n\n```bash\n# Dockerで実行する\ndocker compose up\n\n# ネイティブのPython環境で実行\npython video2slide_extractor.py presentation.mp4 ./slides config.toml\n```\n\n## 設定\n\nこのツールはTOMLファイルを使用して設定できます。各パラメータの詳細な説明は以下の通りです：\n\n### スライド検出パラメータ\n\n```toml\n[slide_detection]\n# フレーム差分検出の閾値（低い値ほど多くのスライドを検出）\nframe_diff_threshold = 15\n\n# 変化検出の最小コントゥア面積（低い値ほど多くのスライドを検出）\nmin_contour_area = 500\n\n# 検出されたスライド間の最小フレーム数\nmin_frame_interval = 15\n\n# 安定性チェックのフレーム数\nstability_frames = 10\n\n# ブラー処理のカーネルサイズ\nblur_kernel_size = 5\n\n# コントラスト強調パラメータ\ncontrast_clip_limit = 2.0\ncontrast_grid_size = 8\n\n# 重複検出の類似度閾値（0.0-1.0）\nsimilarity_threshold = 0.95\n\n[output]\n# 出力画像のJPEG品質（1-100）\njpeg_quality = 95\n\n# 出力画像の拡張子\nextension = \"jpg\"\n```\n\n---\n\n# Video-2-Slide-Extractor\n\nExtract slides from video files captured during presentations using OpenCV.\n\n## Description\n\nThis tool analyzes video files and automatically detects and extracts presentation slides. It uses the OpenCV library to detect significant changes between frames and ensures stable slide detection.\n\n## Features\n\n- Automatic slide detection from video files\n- Customizable detection parameters\n- High-quality image output\n- Support for various video formats\n- Stability check to prevent duplicate slides\n- Configurable output quality and format\n\n## Requirements\n\n- Python 3.7+\n- OpenCV\n- NumPy\n- Pillow\n- tomli\n\n## Installation\n\n### Using Docker\n\n```bash\ndocker compose up --build\n```\n\n### Using Native Python Environment\n\n1. Install uv\nPlease refer to the [official installation guide](https://github.com/astral-sh/uv#installation).\n\n2. Install dependencies\n```bash\nuv venv\nuv pip install -r requirements.txt\n```\n\n3. Update dependencies\n```bash\nuv pip install --upgrade -r requirements.txt\n```\n\n## Usage\n\n### Using Docker\n\n1. Place your video file in the `input` directory\n2. Run `docker compose up`\n3. Extracted slides will be saved in the `output` directory\n\n### Using Native Python Environment\n\n```bash\npython video2slide_extractor.py \u003cvideo_file\u003e \u003coutput_directory\u003e [config_file]\n```\n\n### Example Usage\n\n```bash\n# Using Docker\ndocker compose up\n\n# Using Native Python Environment\npython video2slide_extractor.py presentation.mp4 ./slides config.toml\n```\n\n## Configuration\n\nThis tool can be configured using a TOML file. Detailed descriptions of each parameter are as follows:\n\n### Slide Detection Parameters\n\n```toml\n[slide_detection]\n# Frame difference threshold (lower value means more slides are detected)\nframe_diff_threshold = 15\n\n# Minimum contour area for change detection (lower value means more slides are detected)\nmin_contour_area = 500\n\n# Minimum frame interval between detected slides\nmin_frame_interval = 15\n\n# Stability check frame count\nstability_frames = 10\n\n# Blur processing kernel size\nblur_kernel_size = 5\n\n# Contrast enhancement parameters\ncontrast_clip_limit = 2.0\ncontrast_grid_size = 8\n\n# Similarity threshold for duplicate detection (0.0-1.0)\nsimilarity_threshold = 0.95\n\n[output]\n# JPEG quality of output images (1-100)\njpeg_quality = 95\n\n# Output image extension\nextension = \"jpg\"\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftill0196%2Fvideo2slide_extractor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftill0196%2Fvideo2slide_extractor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftill0196%2Fvideo2slide_extractor/lists"}