gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 23:06:20 25 4
gpt4 key购买 nike

我是 python 的新手,但对其他语言有相当多的经验。我想知道是否有人可以提供帮助。

问题我正在尝试合并两个图像的比较(使用 ImageMagicks compare.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 取得的唯一成功是延迟输出,但我仍然无法将其捕获到变量。

正在做:

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。

谁能帮忙解决这个问题,或者谁知道为什么会这样?

干杯,

内森。

最佳答案

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

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

使用 Python ImageMagick 确实会更好模块。如果发生错误,EXE 文件甚至不会返回非零值,因此您不能真正合理地在批处理脚本中使用它。

关于python - 从 ImageMagick 的 compare.exe 获取终端输出时出现问题(通过管道或 Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5145508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com