end0tknr's kipple - 新web写経開発

http://d.hatena.ne.jp/end0tknr/ から移転しました

ImageMagick の compare コマンドによる画像比較

DOS> compare.exe input_img_1.png input_img_2.png  diff_img.png

基本的な実行は上記の通りで、diff_img.png に差分が出力されます。

例えば、pythonから連続的に compareを実行する場合、次のようになると思います。

#!/usr/local/bin/python
# -*- coding: utf-8 -*-

import os
import sys
import subprocess
import time

conf = {"image_magick_compare":
        "c:/Users/end0t/tmp/ImageMagick-70/compare.exe"}

def main():
    if len(sys.argv) == 4:
        in_dir_1 = sys.argv[1]
        in_dir_2 = sys.argv[2]
        out_dir  = sys.argv[3]
    else:
        print("USAGE:",sys.argv[0],"IN_DIR_1 IN_DIR_2 OUT_DIR")
        return None

    i = 0
    for filename in os.listdir(in_dir_1):
        i += 1
        print(i, filename)
        cmd_line = " ".join([conf["image_magick_compare"],
                             in_dir_1 +"/"+ filename,
                             in_dir_2 +"/"+ filename,
                             out_dir +"/"+ filename ])

        result = subprocess.call(cmd_line)
        
if __name__ == '__main__':
    main()

以下、差分出力例。赤い部分が差異部分です

f:id:end0tknr:20200602082800p:plain