2013/08/22(木) [n年前の日記]
#1 [cg_tools] 画像内容が一致してるか調べたい
2つの画像に違いがあるかどうかを調べたい。できればコマンドラインツールを使って判定したい。
検索してみたところ、 _ImageMagick の Compare を使えば、目的が果たせると知った。ImageMagick は凄いな。なんでもできちゃうのだな…。
標準出力で、比較結果が出力されるらしい。
UWSCスクリプト内で呼び出してみたけど、一応動いてるように見える。
検索してみたところ、 _ImageMagick の Compare を使えば、目的が果たせると知った。ImageMagick は凄いな。なんでもできちゃうのだな…。
compare -metric AE src1.bmp src2.bmp diff.bmp
compare -metric 比較種類 比較元画像1 比較元画像2 違ってる箇所を出力する画像_-metric というオプション で、比較種類を指定することができるらしい。自分は英語が読めないので自信ないけど、たぶん、-metric AE で、単純に「何ドット違っているか」を出力してくれる、ように見えた。0がでてくれば、全く同じ画像。0より大きい数値が出てきたら、その個数分のドットが違ってますよ、ということじゃないかと。たぶん。自信ないけど。
標準出力で、比較結果が出力されるらしい。
UWSCスクリプト内で呼び出してみたけど、一応動いてるように見える。
// 画像を比較して結果をチェックするuwscスクリプト // ImageMagick の compare を使用。 OPTION EXPLICIT PUBLIC comp_tools = "<#DBL>C:\Prog\ImageMagick-6.8.5-Q8\compare.exe<#DBL> -metric AE" PUBLIC diffimg = "diff.bmp" PUBLIC cmdstr = "" PUBLIC res HASHTBL imgfn imgfn[0] = "001.bmp" imgfn[1] = "002.bmp" imgfn[2] = "003.bmp" cmdstr = comp_tools + " " + imgfn[0] + " " + imgfn[1] + " " + diffimg res = DOSCMD(cmdstr) res = REPLACE(res, "<#CR>", "") if res = "0" THEN MsgBox("画像は同じです。") ELSE MsgBox(res + "個、ドットが異なります") ENDIF
[ ツッコむ ]
以上です。