Christopher question about augmented reality reminded me about a concealed identity trick used in video streams when black strips or blurred areas follow character faces. We can do this with Mathematica
FindFaces functionality. There are a few different ways we can overlay transparent or opaque graphic objects and images with a live video stream. One of them is simply using Show. Let us find some simple overlay masks and what can be better than some glasses, mustaches, goatees, and pipes?
mask = Import /@ {
"http://i.imgur.com/155BjOY.png",
"http://i.imgur.com/zq3Qsm6.png",
"http://i.imgur.com/kONG87s.png",
"http://i.imgur.com/WaQkDsn.png",
"http://i.imgur.com/JZqCWEN.png",
"http://i.imgur.com/9Y5CcUQ.png",
"http://i.imgur.com/5CiN4Af.png"
}
Now execute this code and bring a few friends to smile into camera:
Manipulate[
i = CurrentImage[];
Show[i, Graphics[
MapThread[
Inset[If[mix == "RANDOM", RandomChoice[mask], mix, mix],
Offset[{0, -.27 #2}, #1], Center, #2] &,
{Mean /@ #, -.8 Subtract @@@ #[[All, All, 1]]} &[FindFaces[i]]
]
], ImageSize -> 450]
, {{mix, mask[[7]], ""}, mask~Join~{"RANDOM"}, Setter},
FrameMargins -> 0, SynchronousUpdating -> False]
Thanks to our Wolfram volunteers for avid participation! Let me know if you can think of any improvements for this code.
Have fun!