summaryrefslogtreecommitdiff
path: root/warp-mix-dirs.sh
blob: d7c6bfb8b594b00e4f7e9b50c04b7f571facc2a6 (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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#!/bin/bash

BASENAME=tmp
ITER=1
A_ITER=1
B_ITER=1
FRAMES=200
POSITIONAL=()
while [[ $# -gt 0 ]]
do
key="$1"

case $key in
    -f|--frames)
    FRAMES=$(expr $2 + 0)
    shift # past argument
    shift # past value
    ;;
    -s|--start)
    ITER=$(expr $2 + 1)
    shift # past argument
    shift # past value
    ;;
    -o|--output)
    OUTPUT_DIR="$2"
    BASENAME=$(basename $OUTPUT_DIR)
    shift # past argument
    shift # past value
    ;;
    # --default)
    # DEFAULT=YES
    # shift # past argument
    # ;;
    *)    # unknown option
    POSITIONAL+=("$1") # save it in an array for later
    shift # past argument
    ;;
esac
done
set -- "${POSITIONAL[@]}" # restore positional parameters

rm -rf tmp/
mkdir tmp/

B_DIR="null"

for A_DIR in "${POSITIONAL[@]}"
do

  echo $A_DIR
  if [ $B_DIR -eq 'null' ]
  then
    B_DIR=$A_DIR
    B_ITER=A_ITER
    continue
  fi

  a=$(printf "%s/frame_%05d.png" $A_DIR $A_ITER)
  b=$(printf "%s/frame_%05d.png" $B_DIR $((B_ITER + FRAMES)))

  convert -verbose "$DIRECTORY/$a" PNG24:tmp_normalized_0.png
  convert -verbose "$DIRECTORY/$b" PNG24:tmp_normalized_1.png

  ./makeOptFlow.sh tmp_normalized_%01d.png flow 0

  STEP=$(bc -l <<< "1 / $FRAMES")
  SEQUENCE=`seq 0.0 $STEP 1.0`

  for scale in $SEQUENCE; do
    scale="${scale/,/.}"
    echo "${ITER}: ${scale}"
    a_f=$(printf "%s/frame_%05d.png" $A_DIR $A_ITER)
    b_f=$(printf "%s/frame_%05d.png" $B_DIR $B_ITER)
    th torch_warp.lua \
      -flow_file flow/backward_1_0.flo \
      -source_image $a_f \
      -output_image warp_0.png \
      -scale $scale
    th torch_warp.lua \
      -flow_file flow/forward_0_1.flo \
      -source_image $b_f \
      -output_image warp_1.png \
      -scale $(bc <<< "1.0-$scale")
    OUT=$(printf "tmp/frame_%05d.png" $ITER)
    convert warp_0.png warp_1.png -compose blend -define compose:args=$(bc <<< "100*$scale/1") -composite $OUT
    rm warp_0.png warp_1.png

    ITER=$((ITER+1))
    A_ITER=$((A_ITER+1))
    B_ITER=$((B_ITER+1))
  done

  rm -rf flow/ tmp_normalized*.png
done

ffmpeg -i tmp/frame_%05d.png -vcodec libx264 -pix_fmt yuv420p -profile:v baseline -level 3 "mixed_${BASENAME}.mp4"

cd tmp/
mkdir 256
for i in *; do convert $i -resize '256x256!' 256/$i; done
cd ..
mv tmp mixed_${BASENAME}