目的
imagemagickを用いて画像の差分を取るプログラムをpythonで制作しています。画像の枚数は多数です(今回はテストとして8回計算させたいです)
発生している問題
関数で差分を取り、その差分をリストに格納したいのですが、リストの中身が[none]になってしまいます。
また、関数はfor文内に入れているはずなのですが、この関数の計算だけ先に回数分(8回分)先に終わらせてから差分のリスト(diff_list)をfor文に従って表示するという良く分からない出力になっています。
どのように解決すればよいのでしょうか?(´・ω・)
10.8885240.8668640.8768520.8786140.8689920.8724130.89801[None] [None, None] [None, None, None] [None, None, None, None] [None, None, None, None, None] [None, None, None, None, None, None] [None, None, None, None, None, None, None] [None, None, None, None, None, None, None, None]
該当のソースコード
python
1import subprocess 2import os 3 4def compare_SSIM(i): 5 cmd = "compare -metric SSIM /Users/xxxx/Desktop/imagemagick/image_SS/0.png " + "/Users/xxxx/Desktop/imagemagick/image_SS/" + str(i) + ".png NULL" 6 proc = subprocess.run(cmd,shell=True, stdout=subprocess.PIPE) 7 8 9diff_list = [] 10 11for i in range(8): 12 diff_list.append(compare_SSIM(i)) 13 print(diff_list)
試したこと
コマンドを単体でコマンドプロンプトで実行した場合、きちんと出力が表示されます。(0.876852などです)。
関数ではなく以下を単体でpythonで実行した場合、数値+何かが出力されます...(´・ω・)
cmd = "compare -metric SSIM /Users/xxxx/Desktop/imagemagick/image_SS/0.png " + "/Users/xxxx/Desktop/imagemagick/image_SS/1.png NULL" proc = subprocess.run(cmd,shell=True, stdout=subprocess.PIPE) print(proc) -------------------------------------------------------------------------- 出力↓ 0.888524CompletedProcess(args='compare -metric SSIM /Users/xxxx/Desktop/imagemagick/image_SS/0.png /Users/xxxx/Desktop/imagemagick/image_SS/1.png NULL', returncode=1, stdout=b'')
補足情報(FW/ツールのバージョンなど)
pythonのバージョンは3.7.1です。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/03 11:58
2019/10/03 12:06
2019/10/03 12:40
2019/10/03 13:11