| page | title | tags | date |
|---|---|---|---|
Face Alignment for Growth Progress |
python opencv |
2019-05-20 |
Uses OpenCV to align the face in a series of photos with optional manual fine tuning.
Download the 68 feature model for face shape prediction (into the repository alongside progress.py)
wget https://github.com/davisking/dlib-models/raw/master/shape_predictor_68_face_landmarks.dat.bz2
bunzip2 shape_predictor_68_face_landmarks.dat.bz2
- Create a directory
inputfilled with images to be processed - Create a directory
outputfor the result images to be written - Choose a single reference photo to use and put it in the
inputdirectory - Run
./progress.py - Adjust the image as desired using Controls described below and save
- Copy the resulting image from
outputand overwritereference.jpgwith the new image
- Load up the
inputdirectory with all images and run./progress.pyto process them - Images will appear one-by-one with auto rotation based on detected features.
- Use the Controls described below to fine tune image alignment as closely as needed
- Using fix-photo-dates on the output may be helpful
qanderotate left and rightwsadpan imagetandgzoom in and out (Ideally all images should be taken from the same distance so that zoom is not required)roverlay reference image with working image for alignment assist<enter>save image and open next<spacebar>skip image and open next
Here is a simple script to sync new photos only from an Android device over adb
In this example I'm using the Open Camera app set to save images to the folder /sdcard/Progress - adjust as required.
cd input
adb ls /sdcard/Progress | grep -e "\.jpg$" | cut -d" " -f4 | grep -v -f <(echo __; ls -1; ls -1 ../done) | xargs -I{} -n 1 adb pull /sdcard/Progress/{}
Here is an example of converting the images to a video. Adjust the cropping params as required.
ffmpeg -r 10 -f image2 -pattern_type glob \
-i 'output/*.jpg' -filter:v 'crop=in_w*6/12:in_h*7/12:in_w*3/12:in_h*1/12' \
-an -c:v libx264 -pix_fmt yuv420p -crf 25 \
vid.mp4