Quantcast
Channel: FFmpeg | ニコラボ
Viewing all articles
Browse latest Browse all 311

写真など傾いた対象を修正する perspective

$
0
0

斜めから撮った写真や動画をまっすぐから見たように修正する perspective フィルタの使い方。修正部分だけを取り出すには crop フィルタを併用する。crop フィルタを併用しないと出力解像度が元の解像度のままになりアスペクト比がおかしくなる。

基本コマンド

既定値のコマンドだと何も変化しない
ffmpeg -i nput -vf perspective=x0=0:y0=0:x1=W:y1=0:x2=0:y2=H:x3=W:y3=H:interpolation=linear:sense=source:eval=int ouput
ffmpeg -i nput -vf perspective=0:0:W:0:0:H:W:H:0:0:0 ouput
ffplay -i nput -vf perspective=0:0:W:0:0:H:W:H:0:0:0

オプション

  • x0, y0, x1, y1, x2, y2, x3, y3[string]
    左から順番に左上、右上、左下、右下の横と縦の座標指定
      以下の評価式が使える
    • W
      入力フレームの横幅
    • H
      入力フレームの縦幅
    • in
      入力フレーム数
    • on
      出力フレーム数
  • interpolation[int]
    補間方法
    • 0, linear:既定値
    • 1, cubic
  • sense[int]
    補間方法の調整
    • 0, source:指定した座標の枠内を修正。既定値
    • 1, destination:画面全体を指定した座標の枠内に修正して枠外で補完
  • eval[int]
    座標の評価式の設定
    • 0, init:入力した時点で固定。既定値
    • 1, frame:フレーム毎に評価する。in, on で使う

コマンド解説


で GIMP が紹介されていたがこれを ffmpeg で行う。

ffmpeg -i "Cmq2kPgVUAQFwEe.jpg" -vf crop=614-118:1088-99:118:99,perspective=0:0:595-118:127-99:228-118:1088-99:614-118:893-99 perspective.jpg

perspective フィルタの出力例


解説すると修正する対象の4隅の座標を画像編集ツールなどで調べる必要がある。それぞれの座標は順番に 118×99, 595×127, 228×1088, 614×893 となる。修正する部分だけを出力するには最初に crop フィルタで対象部分を切り取る。1, 2 引数が出力解像度。3, 4 引数が左からの座標指定。つまり 1 引数は右幅と左幅を引いて出力の横幅を計算し、同様に縦幅も計算している。次に 3, 4 引数は左上の座標を指定して左上から出力解像度だけ切り取る。

次に perspective フィルタでは、左上が 0x0 の位置になりそこから右上、左下、右下の座標は左上の座標が 0x0 になった分だけずらすことになる。そして出力ファイルを指定する。

sense で destination を指定


ffmpeg -i Cmq2kPgVUAQFwEe.jpg -vf crop=614-118:1088-99:118:99,perspective=0:0:595-118:127-99:228-118:1088-99:614-118:893-99:1:1 perspective-destination.jpg

crop を使わない


ffmpeg -i Cmq2kPgVUAQFwEe.jpg -vf perspective=118:99:595:127:228:1088:614:893:1:1 no-crop-perspective-destination.jpg

crop を最後に使う


ffmpeg -i Cmq2kPgVUAQFwEe.jpg -vf perspective=118:99:595:127:228:1088:614:893:1:1,crop=614-118:1088-99:118:99 perspective-destination-crop.jpg


Viewing all articles
Browse latest Browse all 311

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>