cut-framesは、Gimp用の拙作スクリプトです。 MPlayerを使って作ったファイルか ら、このページや私のブログ にあるような体操の分析写真を作ったりするのが、 かなり楽になります。Gimp-1, Gimp-2どちらでも使えると思います。 要望、質問などはブログにお願いします。 尚、ここの説明は、cut-frames Ver 0.41を対象にしています。
Gimpでは、GAPという動画を扱う為のプラグインがありますが、 用途も使い方もかなり異なります。
cut-framesでは、元の動画 "movie.mp4" (本物の動画ファイルはサイズが大き過ぎるので雰囲気です)から、 次のような画像を作る事が出来ます。
横幅を人間を収めるだけの幅に切り詰められます。
次のように、腰の高さを揃えてしまう事も出来ます。今の例では 低くなったみたいに見えるだけです。
縦幅を人間を収めるだけの幅に切り詰められます。 宙返りではあまり意味ありませんが。
切り出した各フレームを縦や横に並べるのではなく、 レイヤーにして重ねる事ができます。この動画は、 肩を中心にした小さい範囲だけを切り出して、レイヤーに重ねた物を GIFアニメーションとして保存した例です。
動画を用意し、MPlayerを使って、必要な部分のフレームをタイルにしたファイル を作ります。基本的なやり方は、MPlayerの使い方 に書いたので参考にして下さい。以下の説明では、秒間30フレームで録画された、 サイズ320x240の動画ファイル"movie.mp4"を例にします。
横に並ぶ連続写真を 作る場合は、横一列のタイルにするとやりやすくなります。 次のコマンドは、"movie.mp4"の2秒目から69フレームを、 3フレーム飛ばし(全部で23フレームになる)にし、サイズ120x90( この値をフレームのサイズ指定の時利用します) に縮小してから、横一列に並べる例です。
mplayer -ss 2 -frames 70 -vo jpeg -vf framestep=3,scale=120:90,tile=23:1::0:0 movie.mp4
ファイルは自動的に"00000001.jpg"と言う名前でカレントディレクトリに 作られます。
縦に並ぶ連続写真を
作る場合は、横一列のタイルにするとやりやすくなります。
上のコマンドで、"tile=23:1::0:0
"の部分の代わりに
"tile=1:23::0:0
"
にすれば、各コマが縦に並んだファイルができます。
Gimpの機能を使って、画像の色を調整したりもやってしまって下さい (参考: 色を綺麗にする, 線画にする)。 但し、 画像の拡大縮小をすると、フレームのサイズ指定の時、 少しややこしくなります。
パス作成ツールは本来、ベジエ曲線を作るツールですが、cut-framesでは、 まったく違う用途に利用します。
画像の中のどこでもいいので、一ヶ所クリックします。内部上の都合です。 忘れてしまいがちですが、これを 忘れると、切り出しがうまくいかなかったり、エラーになったりします。
(ここでは標準的なの指定方法を説明します。簡易指定方法、スムージング時のキー になるフレームの指定方法については、 cut-frames応用: パスの指定補足 を参照して下さい)
上の一ヶ所クリックに続けて、最初に切り出したいフレームの中の一点を クリックしたまま、少しドラッグすると次のようになります。 描かれる曲線は、無視して下さい。 (分かりやすいように、画像の色は薄くしてあります。)
クリックした所にある○を端点、ドラッグして表れる二つの□をコントロール と言います。(二つのコントロールの位置は、個別に移動させる事ができます。) cut-framesでは、下の絵の様に二つのコントロールの位置によって決まる長方形 を使って、切り出すフレームの大きさを指定します。一方、端点の方は、フレームを 並べる時の基準点を指定します。
以下、同様にして、残りのフレームに対して、端点とコントロールの位置を使って、 切り出す範囲を指定していきます (参考: 指定する端点の高さを一定にする)。 但し、残りのフレームに関しては、 cut-framesを使う時に指定するフレームの並べ方によって次の違いがあります。
尚、いずれの場合も、切り出す部分がフレームの外にはみ出てしまう時には、 そこは透明になります。
画像を右クリックして現れるメニュー の中から、 Script-Fu → Gymnp → cut-frames を選択して現れるダイアログで幾つか指定を行って切り出しを行います。
scale=120:90
と指定した場合には、
Frame Width = 120, Frame Height = 90にします。この値が狂っていると、
正しい切り出しができないので注意して下さい。
cut-framesを使って、切り出しを行う際、方向を layerに指定すると、切り出された各フレームはレイヤーに なって、一番最初のフレームの上に順に重ねられます。この画像は動画を作る 元になります。取り敢えずは、 画像を右クリックして、フィルタ → アニメーション → 動画再生 を選んで現れるウィンドウ内で、再生/停止ボタンを押すと、 動かしてみる事が出来ます。
この画像を動画に保存するには、次の三つの方法があります。
3.のGAPを利用する方法は、私が分かっていないので、割愛します。
Gimpで、ファイルを保存するときに、".gif"と拡張子を付けると現れるダイアログ で、アニメーションとして保存を選び、 エクスポートボタンを押して下さい。 又、ダイアログが現れるので、そこで、秒間何フレームで再生させるか等を 指定して下さい。
MEncoderを使って動画を作るためには、まず、各フレームを連番のファイルに保存す る必要があります。これには、いっちーさん作のGimpスクリプト Continuous Saveを、私が少し変更した、 たむぶん版Continuous Saveを利用します。 これをインストールしてあれば、以下で連番のファイルが作れます。
例えば、2.でJPEGを指定し、3.は最初の"MyPicture_"のままにした場合には、 カレントディレクトリに、"MyPicture_00000001.jpg", "MyPicture_00000002.jpg", ... と言うファイルが作られます。
最後に、MPlayerに付属のMEncoderを用いて ファイルから動画を作る事が出来ます。今の、 "MyPicture_"の例では、
mencoder "mf://MyPicture_*.jpg" -mf type=jpg:fps=30 -o output.avi -ovc lavc -lavcopts vcodec=mpeg4
とすれば、秒間30フレームの早さで再生される音の無い動画 "output.avi"ができ上がります。
cut-frames.scmを保存して、
にコピーして下さい。