我正在使用一个叫做ImageMagick的软件,它有命令行输入功能来进行照片比较并输出值。 我想把这个输出值保存到一个特定的变量中以进一步分析。 我该如何做? 以下是我在命令行中运行的命令:
compare -metric MSE Picture1.jpg Picture2.jpg difference.png
这将比较图片1和图片2之间的像素差异。将其保存为“difference”,并输出差异的数字。如果相同,则为0。我希望能够以变量的形式捕获该值。
我正在使用一个叫做ImageMagick的软件,它有命令行输入功能来进行照片比较并输出值。 我想把这个输出值保存到一个特定的变量中以进一步分析。 我该如何做? 以下是我在命令行中运行的命令:
compare -metric MSE Picture1.jpg Picture2.jpg difference.png
这将比较图片1和图片2之间的像素差异。将其保存为“difference”,并输出差异的数字。如果相同,则为0。我希望能够以变量的形式捕获该值。
对我有用:
variable=$(compare -metric MSE Picture1.jpg Picture2.jpg difference.png 2>&1)
或者
variable=$(compare -metric MSE Picture1.jpg Picture2.jpg null: 2>&1)
compare
实际上是通过其 退出代码 而不是 stdout 输出来报告相似性状态的。$?
中。0
表示图像是相似而不是相同。compare -metric MSE Picture1.jpg Picture2.jpg difference.png # add >/dev/null for no output
ec=$? # save exit code
case $ec in # evaluate exit code
0)
echo "images are similar"
;;
1)
echo "images are dissimilar"
;;
*)
echo "an unexpected error occured"
;;
esac
命令的结果将始终在$?
中。在执行另一个命令之前,确保将该值保存在另一个变量中,否则它将被覆盖。
variable=$(compare -metric MSE Picture1.jpg Picture2.jpg difference.png)