网络摄像头winform上的C#相框

时间:2012-10-08 08:38:47

标签: c# winforms webcam photo

我正在使用c#开发一个Winform应用程序,以便在购物中心看到像照片亭这样的东西。

我设法找到了从网络摄像头捕获图像的方法,并使用easywebcam组件存储捕获的图像。但是,我希望在网络摄像头流视频周围有一个相框,因此在拍摄图像时,相框也包含在内。

我已经做了好几天的研究,但仍然无法对此有所了解。任何宗师都可以为此启发我吗?

2 个答案:

答案 0 :(得分:0)

我已经使用AForge库来处理来自C#的网络摄像头,我很喜欢它的API是多么干净。 这里的示例如何为视频添加时间戳,拍摄快照等: http://www.aforgenet.com/framework/samples/video.html

如果我理解正确,你需要在拍摄快照时拥有原始帧,所以在绘制帧之前复制它:

Image lastUneditedFrame;

private void VideoSourcePlayer_NewFrame(object sender, ref Bitmap image)
    {
        if (lastUneditedFrame != null) 
        {
             lastUneditedFrame.Dispose();
        }

        lastUneditedFrame = image.Clone(new Rectangle(0, 0, image.Width, image.Height), image.PixelFormat);

        var graphics = Graphics.FromImage(image);

        // do the drawing of photo frame

        graphics.Dispose();
    }

// on snapshot button click, simply call lastUneditedFrame.Save();

答案 1 :(得分:0)

感谢您的回复,我使用您提到的_NewFrame事件对其进行了测试,并在overlay方法中添加如下:

private void video_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
    Bitmap img = (Bitmap)eventArgs.Frame.Clone();

    // Perform Overlay here
    Graphics camImg = Graphics.FromImage(img);
    Bitmap frame = new Bitmap(@"D:\PriusC1.png");
    camImg.DrawImage(frame, new Point(100, 100));
    camImg.Save();

    pictureBox1.Image = img;
}

它就像一个魅力,非常感谢你!