zoukankan      html  css  js  c++  java
  • C# 开启摄像头 拍照

    引用 Aforge

    Aforge 介绍:http://baike.baidu.com/link?url=T3XRoneXNTVU8Hoh2tNOtiBYXCPBYmslpVUWWPw4c2pxyclFtmMgAlTNlBhLiXoLN_GamxUpiI3x-UBAErSUNa

    获得摄像设备

         public class FaceCommon
            {
                #region 方法
                /// <summary>
                /// 获取已插USB摄像头硬件Id
                /// </summary>
                /// <returns></returns>
                public static List<string> GetCameraDeviceId()
                {
                    List<string> _cameraList = new List<string>();
                    FilterInfoCollection _filterInfoCollection = new FilterInfoCollection(FilterCategory.VideoInputDevice);// 过滤信息  获取所有已插USB摄像头驱动信息
                    if (_filterInfoCollection != null && _filterInfoCollection.Count > 0)
                    {
                        for (int i = 0; i < _filterInfoCollection.Count; i++)
                        {
                            _cameraList.Add(_filterInfoCollection[i].MonikerString); //向集合中添加USB摄像头硬件Id
                        }
                        _cameraList.Remove(""); //移出空项
                        return _cameraList;
                    }
                    else
                    {
                        return null;
                    }
                }
                #endregion
            }
         
          /// <summary>
            /// 开始播放
            /// </summary>   
    
            private void StartCamera()
            {
                if (_videoCaptureDevice != null)
                {
                    _videoCaptureDevice.Start();
                }
            }
            /// <summary>
            /// 停止播放
            /// </summary>
            private void StopCamera()
            {
                if (_videoCaptureDevice != null)
                {
                    _videoCaptureDevice.SignalToStop();
                }
            }
    
            /// <summary>
            /// 初始化摄像头
            /// </summary>
            private void InitialCamera()
            {
                if (this.comboBox1.SelectedItem != null)
                {
                    _videoCaptureDevice = new VideoCaptureDevice(this.comboBox1.SelectedItem.ToString());
                    _videoCaptureDevice.NewFrame += HandNewFrame;
                }
            }
            private void HandNewFrame(object sender, NewFrameEventArgs args)
            {
                try
                {
                    this.Invoke(new Action(() =>           //拉姆达表达式 =〉后面跟着函数体
                    {
                        if (args != null)
                        {
                            this.pictureBox1.Image = args.Frame.Clone() as Image;
                            imgobj = args.Frame.Clone() as Image;
                        }
                    }));
    
                }
                catch (Exception)
                {
                    //throw;
                }
    
            }

    开始摄像:

        private void button1_Click(object sender, EventArgs e)
            {
                InitialCamera();
                StartCamera();
            }

     拍照并将图片保存:

          StopCamera();
                pictureBox1.BackgroundImage = imgobj;
                if (pictureBox1.BackgroundImage != null)
                {
                    Bitmap bmp = new Bitmap(pictureBox1.BackgroundImage);
                    if (sm.textBox1.Text== String.Empty)
                    {
                        MessageBox.Show("请先完善人员的基本信息", "警告");
                    }
                    else
                    {
                        String number = sm.textBox1.Text.Trim();
                         String dir = System.Environment.CurrentDirectory + "\Images\" + number + ".bmp";
                         if (File.Exists(@dir))
                         {
                             File.Delete(@dir);
                             bmp.Save("Images//" + number + ".bmp");
                             bmp.Dispose();                          //记得释放 不然会提醒文件被另一进程使用。
                         }
                         else
                         {
                             bmp.Save("Images//" + number + ".bmp");
                             bmp.Dispose();
                         }
                        if (File.Exists(@dir))
                        {   
                            sm.pictureBox1.Image = Image.FromFile(dir);
                            sm.pictureBox1.ImageLocation = @dir;
                        }
                        else 
                        { 
                             //
                        }
                    }
                 }

    界面截图:

  • 相关阅读:
    【PaddlePaddle系列】Executor逐步训练模型
    【PaddlePaddle】自然语言处理:句词预测
    【PaddlePaddle系列】CIFAR-10图像分类
    【图像处理】灰度图、亮度峰值极值查找
    【PaddlePaddle系列】报错解决方法合集 (不定时更新)
    【PaddlePaddle系列】手写数字识别
    Thymeleaf 基本用法总结
    Eclipse+Marven + spring mvc 新建一个 Hello world 项目
    Java EE 开发环境搭建
    vue.js安装过程(npm安装)
  • 原文地址:https://www.cnblogs.com/2714585551summer/p/5360514.html
Copyright © 2011-2022 走看看