【问题标题】:C# Photo Frame on Webcam winform网络摄像头 winform 上的 C# 相框
【发布时间】:2012-10-08 08:38:47
【问题描述】:

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

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

我已经研究了好几天,但仍然对此一无所知。有哪位大师可以启发我吗?

【问题讨论】:

    标签: c# winforms webcam photo


    【解决方案1】:

    我使用 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();
    

    【讨论】:

    • 您好 Giedrius,感谢您的信息,我以前读过 AForge.NET,但对网络摄像头上的相框一无所知。
    • 如果我正确理解了这个问题,我已经用示例代码更新了我的答案,这在 AForge 中会是什么样子。
    • 嗨 Giedrius,我还没有尝试过 AForge,但我想在来自网络摄像头的实时流顶部显示相框/模板/背景图像,类似于分层。所述框架是这样的:loonapix.com/framer
    • 嗨 Girdrius,我认为正确的术语应该是“覆盖”。我需要一个相框叠加在我的网络摄像头流视频上,所以当捕获发生时,来自网络摄像头的叠加框架和图像将被一起捕获。
    • 不确定哪种像素格式的图像来自网络摄像头,如果有正确的,则只需使用msdn.microsoft.com/en-us/library/… 将您的相框绘制在 AForge 的顶部,如果没有,它应该在某处样品或论坛,在我确定之前有人这样做了:)
    【解决方案2】:

    感谢您的回复,我用您提到的_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;
    }
    

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

    【讨论】:

    • 只要确保你正在处理所有东西,图形、位图对象都是一次性的,应该被处理以避免内存泄漏。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    • 2015-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    相关资源
    最近更新 更多