Python PIL で Pixel Picker 開発 (AEスクリプト)

少し前にピクセルピッカーAEスクリプトに関してエントリーしましたが
ちょっと試しにやってみたんですよ、PythonでPILを使って。

そしたらなんと、、、!!
とりあえずご興味のある方は続きをお読みください。

2値化されたセルのtgaの場合

<PIL.TgaImagePlugin.TgaImageFile image mode=RGB size=1600×900 at 0x102369710>
1600×900
38 colors
[Finished in 6.6s]

8bitフルカラーのpngの場合

<PIL.PngImagePlugin.PngImageFile image mode=RGBA size=1284×634 at 0x10302C1D0>
1284×634
33462 colors
[Finished in 247.6s]

結果

セルに関しては
6.6s
瞬殺と言っていいほどに早いです。
全ピクセルをピックアップしてこの時間です。
とてもAEで策を弄してごちゃごちゃやる気になりません。

8bitフルカラーpngに関しても
247.6s=4min7.6s
なのでやはりかなり高速です。
しかもピックアップ、出力するだけなら30秒以内で終わってしまい
ピクセルの値の比較、リスト整理にそれ以外の時間が充当されているようです。
はえぇ。でもまー、フルカラーのデータを
ピクセルごとに解析する機会は多分ないので参考記録ということで。

そしてリストファイルをjsonとしても出力してみたので
AE側で新規スクリプトを書き、読み込み変換しようと考えています。
リストはとりあえず
ffffff
1c1c1c
と言ったお馴染みの16進数の値で出力してみました。
これがうまく運用できれば
もー、セルのパーツ分けとかで細部をズームして神経質にピックする手間が省けそうです

17.10.25 update

AEスクリプト上からpythonを叩いてバイパスし
当該レイヤーにカラーキーをアサインするぐらいまでの
ピクセルピッカーの機能を移植できました。
(結局、書き込みに時間がかかるのでjsonに出力することなく直接渡すことにしました。)
さらに解析にかかる時間が短いことはわかっているので
タイムライン上のレイヤーを選択することでソースファイル連番を
全て処理するようにしました。こうすれば取りこぼしは無くなります。

毎回調べ直しているので備忘録としてAEスクリプトからPythonファイルを実行するためのメモ。(Mac版)

system.callSystem('python "filepath.py" ')

ダブルクオートでファイルパスを囲っているのはスペースやマルチバイト文字対応で一応です。

下記は以前撮影のお仕事で使用したセルに関しての処理時間です。

セル(1600×900ピクセル)

A:1枚 19colors
B:9枚 29colors
C:11枚 39colors

計21枚 87colors

処理時間2m15s

30,240,000ピクセル分ですから相当早いです。
もちろん、色の取りこぼしもありません。

あとはカラーガイドのボックスをシェイプレイヤーで自動生成させたり
必要に応じて機能を追加していく予定です。
PsoftのCelFXなどにも渡せるように設計していきたいですね。



コメントを書く