Хорошим началом будет чтение документации.
Я использовал Emgu CV, и есть модуль обнаружения лиц, который возвращает прямоугольник лица людей. (Каскады Хаара)
Как только вы получите эту информацию, будет легко расположить изображение поверх изображения в месте относительно лица.
Библиотека также поддерживает распознавание глаз, поэтому вы можете рисовать на очках тем же способом, что и выше.
Его очень легко использовать, и документация превосходна, поэтому я бы начал с него.
Обновление:
Я нашел код, который использовал (Emgu CV), который обнаруживает каждое лицо на изображении и возвращает список прямоугольников с их местоположением. (прошу прощения за плохое качество кода)
Вам также необходимо настроить параметры в соответствии с вашими потребностями.
public List<Rectangle> detect(Bitmap inputImage)
{
inImage = new Image<Bgr, byte>(inputImage);
grayImage = inImage.Convert<Gray, Byte>();
List<Rectangle> faceRects = new List<Rectangle>();
var faces = grayImage.DetectHaarCascade(haar, 1.1, 1, HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, new Size(inImage.Width, inImage.Height))[0];
grayImage.Dispose();
foreach (var face in faces)
{
faceRects.Add(face.rect);
}
inImage.Dispose();
return faceRects;
}