summaryrefslogtreecommitdiff
path: root/cut_to_borders.sh
blob: 3de37a31bc4c13519bc00680ce69d4e14df54e0d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/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

# to functions

# cut left border
# cut right border
# assume position