从 ImageMagick 的 Compare.exe 获取终端输出时出现问题(通过管道或 Python)

2024-03-13

我对 python 相当陌生,但对其他语言有相当多的经验。我想知道是否有人可以帮忙。

问题我试图合并两个图像的比较(使用 ImageMagickscompare.exe),然后根据输出做出决定。

我遇到了问题,因为我似乎无法将 Compare.exe 的输出提取到我自己的代码中。

在命令行运行命令,我得到了所需的差异度量:

C:\usr\local\bin\att>compare -metric AE -fuzz 2000 1.png 2.png diff.png
8772
C:\usr\local\bin\att>_

问题是如果我尝试将其传输到文本文件:

C:\usr\local\bin\att>compare -metric AE -fuzz 2000 1.png 2.png diff.png > tmp.txt
8772

该指标仍显示在控制台上,而不写入文本文件。

我使用 python 取得的唯一成功是延迟输出,但我仍然无法将其捕获到变量中。

Doing:

myOutput=subprocess.Popen("C:\\usr\\local\\bin\\att\\compare.exe -metric AE -fuzz 100 1.png 2.png mask.png", stdout=subprocess.PIPE)

在我调用以下命令之前,不会在控制台上显示“8772”:

line = myOutput.stdout.readline()

当它被写入控制台输出时,但我的变量将为 NULL。

任何人都可以帮忙解决这个问题,或者有人知道为什么会发生这种情况吗?

Cheers,

Nathan.


比较工具在 stderr 上输出结果。当然,这完全没有意义,但要解决这个问题,您需要将 stderr 转发到文件(而不是 stdout)

compare -metric AE -fuzz 2000 1.png 2.png diff.png 2> tmp.txt

你真的会更好地使用Python ImageMagick http://www.imagemagick.org/download/python/模块。如果发生错误,EXE 文件甚至不会返回非零值,因此您无法真正在批处理脚本中合理地使用它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 ImageMagick 的 Compare.exe 获取终端输出时出现问题(通过管道或 Python) 的相关文章

随机推荐