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;
            }

    摘自:百度    谢谢

  • 相关阅读:
    利用Clojure统计代码文件数量和代码行数
    Workflow:添加工作流存储功能
    MongoDB:最简单的增删改查(Oops,可能太简单了)
    《WF in 24 Hours》读书笔记
    推荐一个学习python的网站
    Inter系列处理器名称浅析
    [Android1.5]TextView跑马灯效果
    Code::Blocks 的配色方案
    PuTTY + Xming 远程使用 Linux GUI
    Linux下查看文件和文件夹大小
  • 原文地址:https://www.cnblogs.com/hanke123/p/6605789.html
Copyright © 2011-2022 走看看