ディレクトリ内の画像を一つずつwaifu2xで拡大するbashスクリプト

bash コンピュータ
bash

コマンドラインで画像を拡大するソフトwaifu2x-converter-cppを試したところ、拡大することによる境界線のぼやけが少なく結構シャープな仕上がりなりました。
このソフトはWebサービスのwaifu2xから変換機能のみ抽出したコマンドラインで実行するようにしたものです。私はUbuntu 20.04LTSで実行していますが、導入はソースコードからビルドする必要があります。また、GPUの演算機能を使う関係上グラフィックボードの種類ごとに異なったビルド環境を用意する必要もあり少し敷居が高いです。

自分はIntelのCPUで演算させましたが、NVIDIAやAMDのグラフィックボードを使って演算させるのも速度的にどうなるか楽しそうなソフトでもあります。

実際の演算中はCPU(GPU)に対する負荷が大きく、空冷のCPUクーラーがフル回転する音を久しぶりに聞くことが出来ました。こういったソフトを使うと最新ハイエンドなCPUやGPUが欲しい気持ちが高まる良くない点があります。

いろいろ面白みのあるソフトではありますが、実際に使う場合多量の画像ファイルを一括拡大して別のディレクトリに保存させたくなります。

もしかするとコマンド自体にそういった機能があるかもしれませんが、一般的にこういった仕事はシェルスクリプトの出番になります。

シェルスクリプトというともっぱらWindowsでPowershellを使っておりますが、Ubuntuだったらbashだろうとエデッタを立ち上げてみたものの指が動く気配がない。基本的な構文すら身についていない事実に気が付きネットで調べながら思考錯誤してみました。

#!/bin/bash

infiles="/var/share/work/org/*.png"
outdir="/var/share/work/big/"

for filepath in $infiles; do
    outpath="${outdir}${filepath##*/}"
    waifu2x-converter-cpp --scale-ratio 2 -m scale -p 0 -i $filepath -o $outpath 
done

waifu2x-converter-cppはパスの通ったしかるべき場所にインストールされていてオプション類は任意の設定になります。(スクリプトでは2倍に拡大)
出力先のディレクトリは任意指定し、ファイル名は入力のファイル名と同名で出力します。

それこそ1つの画像ファイルに数十秒の処理時間が必要となるソフトですのでファイルの容量によって処理時間が膨大になる可能性があります。sshなどで外部から実行させる場合screenなどで実行してあげるとよいでしょう。

ちなみに、Intel(R) Core(TM) i5-7500 CPU @ 3.40GHzで846×1200でpng形式の画像を2倍の1692×2400にしたところ実行時間は約10秒でした。

コメント