如何为图像添加效果

时间:2012-01-25 08:04:07

标签: c# image opencv emgucv

我是图像处理的新手。我想知道如何使用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'

所以我将使用Image myimg.Add()

进行任何操作

1 个答案:

答案 0 :(得分:2)

一个良好的开端是阅读文档。

我使用过Emgu CV并且有一个面部检测模块,它返回人脸的矩形。 (Haar Cascades)

获得该信息后,可以轻松地将图像放在图像顶部相对于脸部的位置。

该库还支持眼睛检测,因此您可以使用与上述相同的方法在眼镜上绘图。

它非常易于使用且文档非常好所以我会从那里开始。

<强>更新

我找到了我使用的代码(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;
        }