Tracking or face detection, and blurring or silly hats
Submitted by Alex Băluț
There are some face blurring plugins in GStreamer:
$ gst-inspect-1.0 | grep -i faceb opencv: faceblur: faceblur frei0r: frei0r-filter-facebl0r: FaceBl0r
They can be used to automatically blur faces. But when you need to blur a face, you want to make sure it's blurred all the time. The face detection algorithm cannot guarantee this, so they have a serious limitation. Not sure what's the purpose of these two plugins to be honest.
We should allow the user to manually correct the detected position of the face and then feed that info to an effect which allows face blurring. For example
frei0r-filter-alphaspot allows drawing a black rectangle at a keyframeable position, and also have keyframeable tilt (angle).
The plan would be to:
# Allow seeding the keyframes of the
frei0r-filter-alphaspot element from the data provided by the facedetect plugin OR from other sources like [ http://info.ee.surrey.ac.uk/Personal/Z.Kalal/tld.html | TLD ]. The options for fine-tuning the face detection algorithm and for how to translate the obtained data into keyframes can be specified in the Seed UI. For example, depending on how noisy the data is, the user might want to specify a minimum threshold between the position at the last keyframe and the current position, for a new keyframe to be created. This should smooth it a bit which would be useful considering currently it's possible to delete keyframes only one by one (by double-clicking).
# Allow the user to select and drag&drop the blur in the viewer. When doing this, the keyframes for x, y, radius at the current playhead position will be set or updated to reflect the changes.