#!/bin/bash # cheapo autorotoscoper # Copyright 2006, Kees Cook # Licensed under the GPL v2+ set -e SOURCE="$1" if [ ! -r "$SOURCE" ]; then echo "Usage: $0 SOURCE.avi" >&2 exit 1 fi if [ ! -r "00000001.png" ]; then mplayer -vo png -ao null -nosound "$SOURCE" fi # Fill style if [ ! -r "00000001.png.svg" ]; then echo "Tracing ..." for i in *[0-9].png; do autotrace -despeckle-level 15 -input-format PNG -output-file $i.svg -output-format svg $i done fi if [ ! -r "00000001.png.svg.png" ]; then for i in *[0-9].png.svg; do inkscape --export-png=$i.png $i done ffmpeg -r 30 -i %08d.png.svg.png -vcodec mpeg4 -b 600 -i "$SOURCE" -acodec copy "$SOURCE"-fill.avi fi # Outline style if [ ! -r "00000001.png.outline.svg" ]; then echo "Copying fill SVGs to outline SVGs ..." find . -name '*[0-9].png' | while read i; do cp $i.svg $i.outline.svg done echo "Converting fill to outline ..." find . -name '*[0-9].png.outline.svg' | xargs perl -pi -e 's/style="fill:#([^;]+); stroke:none;"/style="fill:#$1; fill-opacity:0.3; stroke:#000000; stroke-opacity:1; stroke-width:2;"/' fi if [ ! -r "00000001.png.outline.svg.png" ]; then for i in *[0-9].png.outline.svg; do inkscape --export-png=$i.png $i done ffmpeg -r 30 -i %08d.png.outline.svg.png -vcodec mpeg4 -b 600 -i "$SOURCE" -acodec copy "$SOURCE"-outline.avi fi