Как добавить эффекты к изображению - PullRequest
1 голос
/ 25 января 2012

Я новичок в обработке изображений. Я хочу знать, как я могу добавить эффекты к изображению, используя EmguCV или любую другую технику. Так же, как Microsoft LifeCam. (Например, показывая шляпу на голове, показывая имя наголова и т. д.)

Пожалуйста, помогите, заранее спасибо.

Обновление :: Сейчас я работаю с кодом

распознавание лицx86

в том смысле, что я использую функцию currentFrame.Draw (...) для создания изображения.Теперь я хочу добавить новое растровое изображение с текущим изображением, но оно показывает мне исключение.

OpenCV: The operation is neither 'array op array' (where arrays have the same size and the same number of channels), nor 'array op scalar', nor 'scalar op array'

Так что все, что я буду делать с изображением myimg.Add ()

1 Ответ

2 голосов
/ 25 января 2012

Хорошим началом будет чтение документации.

Я использовал 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;
        }
...