https://github.com/vitroid/trainscanner
Convert a video to a slitscanned train image.
https://github.com/vitroid/trainscanner
Last synced: 12 months ago
JSON representation
Convert a video to a slitscanned train image.
- Host: GitHub
- URL: https://github.com/vitroid/trainscanner
- Owner: vitroid
- Created: 2012-06-18T09:17:56.000Z (about 14 years ago)
- Default Branch: master
- Last Pushed: 2024-11-12T02:40:58.000Z (over 1 year ago)
- Last Synced: 2024-11-12T03:28:22.013Z (over 1 year ago)
- Language: Python
- Size: 42.2 MB
- Stars: 17
- Watchers: 7
- Forks: 3
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README

Version 0.28.1
# TrainScanner の使い方
## インストール
Terminal から以下のコマンドでインストール・起動して下さい。
```shell
pip install trainscanner
trainscanner
```
開発中の版を試してみたい場合はこちら。
```
pip install git+https://github.com/vitroid/TrainScanner.git
```
Intel Macなど、PyQt6が動かない場合はこちらをどうぞ。
```
pip install git+https://github.com/vitroid/TrainScanner.git@PyQt5compat2
```
## ドキュメント
[Wiki](https://github.com/vitroid/TrainScanner/wiki)
## 前処理: 手ぶれ補正
手持ち撮影でもきれいにつながるように、`trainscanner`で列車をつなぐ前に、手ぶれをとりのぞくツールです。
```shell
antishake
```
ムービーが画像ファイルに展開されるので、それなりのディスク容量が必要です。生成した画像ファイルの束は、ディレクトリごと`trainscanner`で読みこめます。
## 後処理: 各種コンバータ
TrainScanner で作成した画像は巨大でしかも長大なので、そのままでは取り扱いにくいため、見易いようにいろんな変換プログラムを準備しました。
```shell
ts_converter
```
### 拡張プラグイン
pynojectorをインストールすると、ts_converterに機能が追加されます。
```
pip install https://github.com/vitroid/pynojector.git
```
## コマンドラインからの利用
### `helicify`: 長い画像をらせんにするツール
長い画像を、定型用紙に入るように「円筒に巻く」プログラムです。
```
helicify longimage.png
```
```
usage: helix.py [-h] [--output OUTPUT] [--aspect ASPECT] [--head-right]
[--width WIDTH]
image_path
らせん画像を作る
positional arguments:
image_path 入力ファイルのパス
options:
-h, --help show this help message and exit
--output OUTPUT, -o OUTPUT
出力ファイルのパス
--aspect ASPECT, -a ASPECT
アスペクト比-- 0.1,10
--head-right, -R 列車は右向きに進む
--width WIDTH, -W WIDTH
画像の幅 (ピクセル, 変更しないなら0)-- 0,10000
```
### `rectify`: 長い画像を何段かに切りわけるツール
長い画像を、定型用紙に入るように「円筒に巻く」プログラムです。こちらは、画像がななめにならない代わり、円筒をのりづけする時にずらす必要があります。
```
rectify longimage.png
```
```
usage: rect.py [-h] [--output OUTPUT] [--aspect ASPECT] [--overlap OVERLAP]
[--head-right] [--thumbnail] [--width WIDTH]
image_path
ぶつ切り山積み
positional arguments:
image_path 入力ファイルのパス
options:
-h, --help show this help message and exit
--output OUTPUT, -o OUTPUT
出力ファイルのパス
--aspect ASPECT, -a ASPECT
アスペクト比-- 0.1,10
--overlap OVERLAP, -l OVERLAP
端の重複部分の幅 (パーセント)-- 0,100
--head-right, -R 列車は右向きに進む
--thumbnail, -t Add a thumbnail image (Hans Ruijter's style)
--width WIDTH, -W WIDTH
画像の幅 (ピクセル, 変更しないなら0)-- 0,10000
```
### `movify`: スクロール動画を生成するツール
スクロール動画を生成します。
```shell
movify longimage.png
```
```
usage: movie.py [-h] [--output OUTPUT] [--duration DURATION] [--height HEIGHT]
[--width WIDTH] [--head-right] [--fps FPS] [--crf CRF] [--png]
[--alternating] [--accel] [--encoder ENCODER] [--thumbnail]
[--imageseq]
image_path
列車の長い写真からムービーを作る
positional arguments:
image_path 入力ファイルのパス
options:
-h, --help show this help message and exit
--output OUTPUT, -o OUTPUT
出力ファイルのパス
--duration DURATION, -d DURATION
ムービーの尺 (秒)-- 10,1000
--height HEIGHT, -H HEIGHT
ムービーの高さ (pixels)-- 100,4096
--width WIDTH, -W WIDTH
ムービーの幅 (pixels)-- 100,4096
--head-right, -R 列車は右向きに進む
--fps FPS, -r FPS フレームレート (fps)-- 1,120
--crf CRF, -c CRF CRF (Constant Rate Factor) -- 16,30
--png, -p 高画質な中間ファイル
--alternating, -a 行ったり来たり
--accel, -A 加速
--encoder ENCODER, -e ENCODER
mp4エンコーダ
--thumbnail, -t Add a thumbnail (Yamako style)
--imageseq, -i PNG画像のセットを生成する
```
### _2020-7-15 最近確認していません。動くかどうか保証できません_
`TrainScanner.app`は、`pass1.py`と`stitch.py`という 2 つのプログラムを呼びだすためのラッパーで、これらのプログラムは単独でも動作します。列車の移動量の検出がうまくいかなかった場合など、手直ししたい場合には、`tsconf`ファイルと`tspos`ファイルを手で修正して、より良い結果を得ることもできます。
それぞれのコマンドには多数のオプションがあります。`-h`オプションを付けて、使い方を見て下さい。ほとんどのオプションは`trainscanner_gui.py` (アプリケーション名は`TrainScanner.app`, `TrainScanner.exe`)上で指定できますので、グラフィック表示ができる環境であれば、GUI を使うことをお勧めします。ただし、`tsconf`ファイルと`tspos`ファイルを手で修正した場合は`stitch.py`を使いたくなるかもしれません。
### `trainscanner_pass1`: 照合プログラム
ビデオを読みこみ、列車の移動を検出し、移動量を`.tspos`という名前のファイルに出力します。
```
trainscanner_pass1 video.mov
```
### `trainscanner_stitch`: 結合プログラム
pass1.py の出力に従い、映像を連結して 1 枚の大きな写真を作ります。通常は、以下のように、pass1.py が出力した`.tsconf`ファイルを読みこんで使用します。
```
trainscanner_stitch @video.mov.12345.tsconf
```
`@`マークは、コマンドラインオプションをファイルからインクルードすることを意味します。この後ろに、さらにオプションを追加することで、スリット位置やフレーム間のぼかし幅を調節できます。例えば、あとからスリット位置と幅をそれぞれ 220 と 1.5 に変えたい場合は、
```
trainscanner_stitch @video.mov.12345.tsconf -s 220 -w 1.5
```
のようにします。GUI を使う場合には、設定を変える度に pass1.py も実行せざるをえませんが、stitch.py を直接使えば、よりすばやく結果を得られます。
### `trainscanner`: 統合ユーザーインターフェイス
`trainscanner_pass1`と`trainscanner_stitch`を統合し、オプションを対話的に設定できる UI を備えた TrainScanner の本体です。Windows の exe ファイルや macOS の App はこれをパッケージ化したものです。
## Revision History
# 変更履歴
## [0.16.1] - 2025-05-12
### 追加
- movify および movify2 のエントリを追加
## [0.16.0] - 2025-05-12
### 追加
- GUI に新しいラジオボタンを追加
- 横スクロール動画の生成機能を強化
- 画像処理のオプションに右端を先頭にする機能を追加
- 進捗バーの更新を改善
- ffmpeg の存在確認に基づいてボタンの有効/無効を制御するロジックを調整
## [0.15.0] - 2025-05-09
### 変更
- converter のパスを ts_conv から trainscanner.converter に変更
- 動画生成機能の高さ調整ロジックを改善
## [0.14.3] - 2025-05-08
### 変更
- Python の依存関係を 3.11 に変更
- ホームページの URL を追加
## [0.14.2] - 2025-05-08
### 変更
- Python の依存関係を 3.10 に変更
- Linux 環境でのビデオモジュールのインポートを修正
## [0.14.1] - 2025-05-08
### 追加
- scikit-video パッケージを追加
### 修正
- qrangeslider.py でのイベント処理において、座標を整数に変換する修正
## [0.13.2] - 2023-01-09
### 修正
- tsconf ファイルを開くときに発生するエラーを修正
- Apple M1 対応の改善
## [0.13] - 2023-01-04
### 変更
- PyQt6 への移行
## [0.12.0] - 2020-07-15
### 修正
- パスに空白が含まれる場合のバグを修正
### 変更
- コマンドラインオプションの更新
## [0.10] - 2017-04-13
### 追加
- Hansify コマンドを追加
## [0.7.3] - 2016-12-29
### 追加
- QRangeSlider の実装
### 修正
- 後半の thumbnail が無視される問題を解決
## [0.5.1] - 2016-11-27
### 変更
- スライダーの高さを変更
## [0.5.0] - 2016-11-25
### 追加
- 矩形フォーマットの導入
### 変更
- Python3 へのアップグレード
- Windows 対応の改善
## [0.4.0] - 2016-11-20
### 追加
- tsconf ファイルから設定を継承する機能
### 変更
- ジェネレーターの簡略化
## [0.3.0] - 2016-11-13
### 追加
- アルファ版リリース
### 変更
- チュートリアルの更新
## [0.2.0] - 2016-10-16
### 追加
- モーション検出エリア(フォーカスエリア)の指定機能
- スクロールバー付き GUI プロトタイプ
- 上下のクロップ機能
## [0.1.0] - 2016-08-31
### 追加
- Python2+OpenCV2 による完全な書き直し
## Memo/Reference
- [Python3 with OpenCV3](https://hackerslog.net/posts/softwares/opencv/opencv-install-with-python-on-mac/); downloading HEAD of openCV3 takes VERY long time.
- [Windows/Python3/OpenCV3/PyQt4/Anaconda](http://qiita.com/sugurunatsuno/items/ce3c0d486bdc93688192)
- [failed to build exe on Windows?](http://stackoverflow.com/questions/37815371/pyinstaller-failed-to-execute-script-pyi-rth-pkgres-and-missing-packages)
- Flickr account for TrainScanner development: [TrainScanner](https://www.flickr.com/photos/149573560@N03)