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
[ ツッコむ ]
以上です。