如何使用AForge调用本机摄像头

前言

      WPF展示摄像头的方式有很多种比如:OpenCV、EmguCV、Accord、AForge,此片主要讲解AForge。

一、使用 NuGet 搜索 AForge 安装。(如图)

b40e7600f9024e0be5e2cab00b6f5171.png

二、在 XAML 中添加 前段代码展示摄像头。

代码如下:

<Grid>
    <Image HorizontalAlignment="Stretch" Name="frameHolder"  VerticalAlignment="Stretch"  Stretch="Fill"/>    
</Grid>

三、编写后台逻辑。

代码如下:

VideoCaptureDevice LocalWebCam;
FilterInfoCollection LoaclWebCamsCollection;


private void MainWindow_Loaded(object sender, RoutedEventArgs e)
        {
            LoaclWebCamsCollection = new FilterInfoCollection(FilterCategory.VideoInputDevice);
            if (LoaclWebCamsCollection.Count <= 0)
            {
                MessageBox.Show("本机未找到WebCam", "温馨提示");
                return;
            }
            LocalWebCam = new VideoCaptureDevice(LoaclWebCamsCollection[0].MonikerString);
            LocalWebCam.NewFrame += new NewFrameEventHandler(Cam_NewFrame);
            LocalWebCam.Start();
        }
        
private void Cam_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
                         
                System.Drawing.Image img = (Bitmap)eventArgs.Frame.Clone();
                DateTime now = DateTime.Now;
                Graphics g = Graphics.FromImage(img);
                SolidBrush brush = new SolidBrush(Color.Red);
                g.DrawString($"时间:{ now.ToString()}", new System.Drawing.Font("Arial", 18), brush, new PointF(5, 5));
                brush.Dispose();
                g.Dispose();
                 MemoryStream ms = new MemoryStream();
                img.Save(ms, ImageFormat.Bmp);
                ms.Seek(0, SeekOrigin.Begin);
                BitmapImage bi = new BitmapImage();
                bi.BeginInit();
                bi.StreamSource = ms;
                bi.EndInit();
                bi.Freeze();
                Dispatcher.BeginInvoke(new ThreadStart(delegate
                {
                    frameHolder.Source = bi;
                }));
        }
        
        this.Closed += (s, e) => 
            {
                if (LocalWebCam == null) return;
                LocalWebCam.Stop();
            };

效果如下:

blogs: https://www.cnblogs.com/yanjinhua/p/14345136.html

Github:https://github.com/yanjinhuagood

作者:驚鏵

出处:https://www.cnblogs.com/yanjinhua

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

转载请著名作者 出处 https://github.com/yanjinhuagood

技术群:添加小编微信并备注进群

小编微信:mm1552923   

公众号:dotNet编程大全    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值