我需要执行下一个 imagemagick 命令
convert some_image.jpeg logo: -fuzz 0% -negate -threshold 0 -negate -format "%[fx:100*mean]" info:
用于某个目录中的所有jpeg
图像。上面的命令将返回百分比数字(例如95.922983.4128)。我需要将该数字与某个阈值(例如98%)进行比较,如果百分比大于阈值,则将文件移至另一个目录。
目前我所拥有的是:
for filename in /writeData/TAX1040/*.jpeg; do
white=$(convert $(filename) logo: -fuzz 0% -negate -threshold 0 -negate -format "%[fx:100*mean]")
echo -n "$white"
done
我有一个missing an image filename
错误。
感谢@oliv,我有一个有效的脚本:
#!/usr/bin/env bash
mkdir -p /writeData/TAX1040/blank
for filename in /writeData/TAX1040/*.jpeg; do
white=`convert $filename logo: -fuzz 0% -negate -threshold 0 -negate -format "%[fx:100*mean]" info:`
p=${white:0:2}
if [ "$p" -ge 98 ]; then
echo "Percentage of white in file $filename is $p"
echo "Moving file $filename to blank directory"
mv "$filename" /writeData/TAX1040/blank
fi
done
答案 0 :(得分:2)
该文件必须与"$filename"
一起使用,而不是与实际上执行命令$(filename)
(可能会失败)的filename
一起使用。
假设您的convert
命令行正确,则可以像下面这样检查值:
threshold=98
for filename in /writeData/TAX1040/*.jpeg; do
white=$(convert "$filename" logo: -fuzz 0% -negate -threshold 0 -negate -format "%[fx:100*mean]")
if(( white > threshold )); then
mv "$filename" /to/another/path
done
请注意,在算术表达式((...))
中,无需使用$
进行扩展。