アスペクト比に基づいて画像を整列

アスペクト比に基づいて画像を整列

新しいフレームに合わせて芸術的なイメージを選択しようとしています。特定のアスペクト比に対する近接性に基づいてこれらの画像を位置合わせし、次にfehのようなものを近接性の降順で見ることができます。

素晴らしい一行のUnix式がありますか?それ以外の場合は、数十行のPythonで問題を解決できます。

ベストアンサー1

NNのImageMagickアノテーションを手がかりとして使用すると、-format出力の一部として任意の計算を実行できることがわかりました。したがって、可能な1つの方法は次のとおりです。

identify -format "%[fx:round(100000*abs((4/3)-(w/h)))]:%M\n" *.jpg | \
    sort -n -k1 -t:

あなたが欲しいものをする必要があります。 4/3は定数であり、所望のアスペクト比である。もちろん、前の出力の出力であることがわかりますidentify(「この画像に最も近い」一致)。

これを説明するために、必要なアスペクト比と実際のアスペクト比との間の明らかな違いを見てみましょう。次に、大きな数を掛けて丸めます。乗算と丸めは、整列が有理数ではなく整数のみを処理するために発生します。

編集する

sort整数だけでなく有理数も実際に計算できることがわかりました。これはSingle Unix仕様(v4)にも指定されています。したがって、次の回避策を使用することができます。

identify -format "%[fx:abs((4/3)-(w/h))]:%M\n" *.jpg | \
    sort -n -k1 -t:

おすすめ記事