zoukankan      html  css  js  c++  java
  • C# 调取摄像头 +拍照

    1.添加引用

    using System.Windows.Media.Imaging;
    using AForge;
    using AForge.Controls;
    using AForge.Video;
    using AForge.Video.DirectShow;
    using Size = System.Drawing.Size;


    2.连接摄像头

        //连接摄像头
            private void CameraConn()
            {
                VideoCaptureDevice videoSource = new VideoCaptureDevice(videoDevices[tscbxCameras.SelectedIndex].MonikerString);
                videoSource.DesiredFrameSize = new System.Drawing.Size(320, 240);
                videoSource.DesiredFrameRate = 1;
    
                videoSourcePlayer.VideoSource = videoSource;
                videoSourcePlayer.Start();
            }

    3.关闭摄像头

     private void btnClose_Click(object sender, EventArgs e)
            {
                videoSourcePlayer.SignalToStop();
                videoSourcePlayer.WaitForStop();
            }

    4.截图

            private void Photograph_Click(object sender, EventArgs e)
            {
                try
                {
                    if (videoSourcePlayer.IsRunning)
                    {
                        BitmapSource bitmapSource = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
                                        videoSourcePlayer.GetCurrentVideoFrame().GetHbitmap(),
                                        IntPtr.Zero,
                                         Int32Rect.Empty,
                                        BitmapSizeOptions.FromEmptyOptions());
                        PngBitmapEncoder pE = new PngBitmapEncoder();
                        pE.Frames.Add(BitmapFrame.Create(bitmapSource));
                        string picName = GetImagePath() + "\" + "xiaosy" + ".jpg";
                        if (File.Exists(picName))
                        {
                            File.Delete(picName);
                        }
                        using (Stream stream = File.Create(picName))
                        {
                            pE.Save(stream);
                        }
                        //拍照完成后关摄像头并刷新同时关窗体
                        if (videoSourcePlayer != null && videoSourcePlayer.IsRunning)
                        {
                            videoSourcePlayer.SignalToStop();
                            videoSourcePlayer.WaitForStop();
                        }
                        
                        this.Close();
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("摄像头异常:" + ex.Message);
                }
            }
    
            private string GetImagePath()
            {
                string personImgPath = Path.GetDirectoryName(AppDomain.CurrentDomain.BaseDirectory)
                             + Path.DirectorySeparatorChar.ToString() + "PersonImg";
                if (!Directory.Exists(personImgPath))
                {
                    Directory.CreateDirectory(personImgPath);
                }
    
                return personImgPath;
            }

    摘自:百度    谢谢

  • 相关阅读:
    三大范式
    html 横线的代码
    CSS下拉 菜单3.27第一次
    JS页面三种打开方式及对话框
    函数整理
    3.22整理作业
    for循环,if 练习
    php测试题
    设计模式
    面向对象的三大特性
  • 原文地址:https://www.cnblogs.com/hanke123/p/6605789.html
Copyright © 2011-2022 走看看