#!/bin/sh set -e # get frames path from cli args framespath=${1:-} [ -z "$framespath" ] && echo "no framespath provided" && exit 1 # draw random pic mkdir -p gray imageName=$(find "$framespath" -type f | sort -R | tail -1) shavedName="gray/"$(basename "$imageName") printf "working with $imageName\r" # detect image border: increment=5 x=150 limitX=600 y=50 colorFuzz=.01 # borderColor="#f7d9ac" borderColor="#ffffff" while true do pixelColor=$(magick convert "$imageName" -crop 1x1+$x+$y -depth 8 txt:- | awk ' NR==2 {print $3}') colorDiff=$(magick compare -metric RMSE xc:"$borderColor" xc:"$pixelColor" null: 2>&1 | sed "s/.*(\(.*\))/\1/") # break condition success echo "fuzz: $colorFuzz; diff: $colorDiff; point: $x:$y" [ 1 -eq "$(echo "$colorFuzz > $colorDiff" | bc)" ] && echo "found border: $x:$y" \ && magick convert "$imageName" -colorspace Gray -shave "${x}x0" "$shavedName" \ && break # break condition fail [ "$x" -gt "$limitX" ] && echo "failed to find border" && break # update point x=$((x+increment)) done for img in "$framespath"/* do magick convert "$img" -colorspace Gray -shave "${x}x0" "gray/$(basename $img)" done # to functions # cut left border # cut right border # assume position