在WPF中使用AForge.net控制摄像头拍照

转载 2015年07月08日 17:23:00

利用AForge.net控制摄像头拍照最方便的方法就是利用PictureBox显示摄像头画面,但在WPF中不能直接使用PictureBox。必须通过<WindowsFormsHost></WindowsFormsHost>来提供交换功能。其解决方法如下:

1、按照常规方法新建一个WPF应用程序;

2、添加引用

WindowsFormsIntegration  (与WinForm交互的支持)

System.Windows.Forms (WinForm控件支持)

AForge.Video和AForge.Video.DirectShow(拷贝AForge.Video.dll,AForge.Video.DirectShow.dll,摄像头操作的库)

3、在XAML中添加  xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"(用wf代替System.Windows.Forms,即可使用<wf:PictureBox/>添加PictureBox控件

4、在界面相应位置添加

<WindowsFormsHost Name="winForm">

  <wf:PictureBox Name="myPicture"/>

</WindowsFormsHost>(至此,界面层的设置完成)

5、代码部分

首先在窗口加载时初始化摄像头

 myPhoto = pictureHost.Child as System.Windows.Forms.PictureBox;
            FilterInfoCollection videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
            if (videoDevices.Count <= 0)
            {
                System.Windows.MessageBox.Show("请连接摄像头");
                return;
            }
            else
            {
                CloseCaptureDevice();

VideoCaptureDevice myCaptureDevice = null;
                myCaptureDevice = new VideoCaptureDevice(videoDevices[0].MonikerString);//myCaptureDevice的类型为      //VideoCaptureDevice,
                myCaptureDevice.NewFrame += new NewFrameEventHandler(myCaptureDevice_NewFrame);
                //myCaptureDevice.DesiredFrameSize = new System.Drawing.Size(436, 360);//436, 360
                //myCaptureDevice.DesiredFrameRate = 10;
                myCaptureDevice.Start();                
            }


//PictureBox myPhoto = pictureHost.Child as System.Windows.Forms.PictureBox;//获取界面中的myPicture控件

void myCaptureDevice_NewFrame(object sender, NewFrameEventArgs eventArgs)//帧处理程序
         {

  PictureBox myPhoto = myPicture;
         Bitmap bitmap = (Bitmap)eventArgs.Frame.Clone();
         myPhoto.Image = bitmap.Clone(
           new RectangleF((bitmap.Size.Width - 295) / 2, (bitmap.Size.Height - 413) / 2, 295, 413), //显示图像的宽度为295像素,高度为413像素
                System.Drawing.Imaging.PixelFormat.Format32bppRgb);
        }

关闭摄像头,释放系统资源(在窗口推出时必须调用)

 private void CloseCaptureDevice()
        {
            if (myCaptureDevice != null)
            {
                if (myCaptureDevice.IsRunning)
                {
                    myCaptureDevice.SignalToStop();                   
                }

       myCaptureDevice = null;
            }

   }


        /// <summary>  

        /// 截图 程序,没有实验,等待中……
        /// </summary>  
        private void Button3_Click(object sender, EventArgs e)  
        {  
            flag = 0;  
            videoSource.NewFrame += new NewFrameEventHandler(video_NewFrame);  
        }        
        private void video_NewFrame(object sender, NewFrameEventArgs eventArgs)  
        {  
            Bitmap bitmap = (Bitmap)eventArgs.Frame.Clone();  
            if (flag == 0)  
            {  
                string img = dirc + "/" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".jpg";  
                bitmap.Save(img);  
                flag = 1;      
            }  
        }


转载自:点击打开链接

C#WPF使用AForge类库操作USB摄像头拍照并保存

项目中用到 USB 摄像头,需要根据情况进行图像抓拍,查了半天资料,比较多的是使用 WPFMediaKit 和 AForge 。 但是由于项目要求不显示 USB 摄像头拍摄的画面,最终确定使用 AF...

C# WPF 快速开发20操作摄像头的开源组件

  • wowkk
  • wowkk
  • 2013年06月09日 20:49
  • 3908

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

在WPF程序中使用摄像头兼谈如何使用AForge.NET控件

前言:AForge.NET 是用C#写的一个关于计算机视觉和人工智能领域的框架,它包括图像处理、神经网络、遗传算法和机器学习等。在C#程序中使用摄像头,我习惯性使用AForge.NET提供的类库。本文...
  • jhqin
  • jhqin
  • 2011年07月20日 13:56
  • 13566

C# VB.net WPF利用MediaFoundation打开摄像头捕捉图片

REM MediaFoundation的.net 类库 http://mfnet.sourceforge.net Imports MediaFoundation Imports System.Runt...
  • llimite
  • llimite
  • 2016年12月14日 09:09
  • 1118

wpf下,在aforge界面 画静态框的实现

利用afoge控件可以来实现usb摄像头播放。在winform下,利用newframe事件,可以实现每一帧的图像处理。 但是如何在wpf下,利用afoge,则有些麻烦。 播放功能是利用 ...

AForge.net 使用之录像拍照功能实现

AForge.net 使用之录像拍照功能实现

C# 调用AForge类库操作摄像头

C# 调用AForge类库操作摄像头,

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在WPF中使用AForge.net控制摄像头拍照
举报原因:
原因补充:

(最多只允许输入30个字)