C# 通过AForge.dll 调用摄像头设备

时间:2018-12-18 19:47 作者:Mr.Pan 阅读数:880



在网络上找调用摄像头的方法,找了AForge,网络上有很多的例子,调用成功了写篇文章总结经验AForge提供了很多的类库,使用起来很方便


AForge
AForge.Controls
AForge.Imaging
AForge.Math
AForge.Video
AForge.Video.DirectShow




界面展示

image.png


检测视像头设备

         FilterInfoCollection videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
         if (videoDevices.Count == 0)
             throw new ApplicationException();
         foreach (FilterInfo device in videoDevices)
         {
             this.comboBox1.Items.Add(device.Name);
         }


启动摄像头

            FilterInfoCollection videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
            if (videoDevices.Count == 0)
                throw new ApplicationException();
            foreach (FilterInfo device in videoDevices)
            {
                this.comboBox1.Items.Add(device.Name);
            }
            //选择下拉框中的一个摄像头设备
            VideoCaptureDevice videoSource = new VideoCaptureDevice(videoDevices[0].MonikerString);
           
            //为摄像头控件设置摄像头获取的图片
            videoSourcePlayer1.VideoSource = videoSource;
            //开启摄像头
            videoSourcePlayer1.Start();


将图像展示在pictrueBox上

            var img = new Bitmap(399, 304, PixelFormat.Format32bppRgb); //设置图片的大小,位数
            videoSourcePlayer1.DrawToBitmap((Bitmap)img, new Rectangle(0, 0, 399, 304));  //绘制图像到Img对象
            pictureBox1.Image = img;
            pictureBox1.Image.Save("a.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);


Bitmap与byte[] 互转 

 public byte[] Bitmap2Byte(Bitmap bitmap)
        {
            using (MemoryStream stream = new MemoryStream())
            {
                bitmap.Save(stream, ImageFormat.Jpeg);
                byte[] data = new byte[stream.Length];
                stream.Seek(0, SeekOrigin.Begin);
                stream.Read(data, 0, Convert.ToInt32(stream.Length));
                return data;
            }
        }
        public Bitmap BytesToBitmap(byte[] Bytes)
        {
            MemoryStream stream = null;
            try
            {
                stream = new MemoryStream(Bytes);
                return new Bitmap((Image)new Bitmap(stream));
            }
            catch (ArgumentNullException ex)
            {
                throw ex;
            }
            catch (ArgumentException ex)
            {
                throw ex;
            }
            finally
            {
                stream.Close();
            }
        }






推荐文章

[推荐] C# 设置Excel数据自适应行高、列宽的2种情况 (转)

[推荐] C# 图片处理帮助类(压缩,裁剪,缩略图)

[推荐] C# 通过AForge.dll 调用摄像头设备

[推荐] C#创建Word并填充内容

[推荐] C# UDP 通讯 简单例子

[推荐] 8天玩转并行开发——第七天 简要分析任务与线程池

[推荐] 8天玩转并行开发——第六天 异步编程模型

[推荐] 8天玩转并行开发——第四天 同步机制(上)

[推荐] 8天玩转并行开发——第一天 Parallel的使用

[推荐] c# 个人总结

[推荐] 8天玩转并行开发——第五天 同步机制(下)

[推荐] 将DataRow[]转换成DataTable的两种写法

[推荐] 8天玩转并行开发——第三天 plinq的使用

[推荐] Bitmap与byte[] 互转

[推荐] 关于.net登录前端加密传输


评论列表



注册用户登录后才能发表评论,请登录注册,访问 博客首页