102 lines
2.1 KiB
Bash
102 lines
2.1 KiB
Bash
#!/bin/bash
|
|
|
|
#set -e
|
|
|
|
if [[ "${1}" == "" ]]; then
|
|
echo "Please provide a calibration JSON"
|
|
fi
|
|
|
|
if [[ "${2}" == "" ]]; then
|
|
echo "Please provide one video or directory of images"
|
|
exit 2
|
|
fi
|
|
|
|
if [[ "${3}" == "" ]]; then
|
|
echo "Please an output directory for pages"
|
|
exit 3
|
|
fi
|
|
|
|
if [ ! -d "${3}" ]; then
|
|
echo "${3} output directory does not exist"
|
|
exit 4
|
|
fi
|
|
|
|
if [ -f "${2}" ]; then
|
|
echo "Exporting frames from ${2}..."
|
|
OUTPUT=$(mktemp -d)
|
|
ffmpeg -y -re -i "${2}" \
|
|
-q:v 1 -qmin 1 -qmax 1 \
|
|
"${OUTPUT}/frame_%06d.tif"
|
|
else
|
|
if [ -d "${2}" ]; then
|
|
OUTPUT="${2}"
|
|
else
|
|
echo "Argument ${2} is neither video nor directory"
|
|
exit 43
|
|
fi
|
|
fi
|
|
|
|
tiff_name () {
|
|
filename=$(basename "${1}")
|
|
filename="${filename%.*}"
|
|
echo "${filename}.tif"
|
|
}
|
|
|
|
echo "Using frames in ${OUTPUT}..."
|
|
|
|
W=$(cat "${1}" | jq -r ".width")
|
|
H=$(cat "${1}" | jq -r ".height")
|
|
DPI=$(echo "${W}/8.5" | bc)
|
|
FRAMES=$(mktemp)
|
|
|
|
echo "DPI: $DPI"
|
|
|
|
ls -1 "${OUTPUT}"*.{jpg,jpeg,JPG,JPG,png,PNG,gif,GIF,tif,tiff,TIF,TIFF} > "${FRAMES}" 2> /dev/null
|
|
FC=$(wc -l < "${FRAMES}")
|
|
PAGES=$(echo "(${FC}/4)+1" | bc)
|
|
|
|
TMP=$(mktemp -d)
|
|
|
|
for ((i=0;i<${PAGES};++i)); do
|
|
f1=$(sed -n "$(((i*4)+1))p" < "${FRAMES}")
|
|
f2=$(sed -n "$(((i*4)+2))p" < "${FRAMES}")
|
|
f3=$(sed -n "$(((i*4)+3))p" < "${FRAMES}")
|
|
f4=$(sed -n "$(((i*4)+4))p" < "${FRAMES}")
|
|
args=""
|
|
if [[ "${f1}" != "" ]]; then
|
|
name=$(tiff_name "${f1}")
|
|
dest="${TMP}/${name}"
|
|
bash white_fourcell.sh $DPI "${f1}" "${dest}"
|
|
args="${args} ${dest}"
|
|
else
|
|
continue
|
|
fi
|
|
if [[ "${f2}" != "" ]]; then
|
|
name=$(tiff_name "${f2}")
|
|
dest="${TMP}/${name}"
|
|
bash white_fourcell.sh $DPI "${f2}" "${dest}"
|
|
args="${args} ${dest}"
|
|
fi
|
|
if [[ "${f3}" != "" ]]; then
|
|
name=$(tiff_name "${f3}")
|
|
dest="${TMP}/${name}"
|
|
bash white_fourcell.sh $DPI "${f3}" "${dest}"
|
|
args="${args} ${dest}"
|
|
fi
|
|
if [[ "${f4}" != "" ]]; then
|
|
name=$(tiff_name "${f4}")
|
|
dest="${TMP}/${name}"
|
|
bash white_fourcell.sh $DPI "${f4}" "${dest}"
|
|
args="${args} ${dest}"
|
|
fi
|
|
bash apply_image.sh ${3}/page_$i.tiff "${1}" ${args}
|
|
done
|
|
|
|
echo "Wrote ${3}/page_$i.tiff"
|
|
|
|
# x determine dpi
|
|
# convert frame to white_fourcell
|
|
|
|
rm "${FRAMES}"
|
|
rm -rf "${TMP}"
|