0

我正在开发一个 Winform 应用程序,c#用于拥有我们可以在购物中心看到的照片亭之类的东西。

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

我已经做了几天的研究,但仍然对此一无所知。任何大师都可以为此启发我吗?

4

2 回答 2

0

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

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;
}

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

于 2012-10-08T10:30:25.997 回答
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();
于 2012-10-08T08:42:44.190 回答