• C#利用摄像头拍照功能实现


    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Drawing.Imaging;
    using System.Text;
    using System.Windows.Forms;
    using System.Threading;
    using System.Diagnostics;
    
    using AForge;
    using AForge.Video;
    using AForge.Controls;
    using AForge.Video.DirectShow;
    using AForge.Video.FFMPEG;
    using AForge.Imaging;
    using AForge.Imaging.Filters;
    using System.IO;
    namespace Camera
    {
        public partial class Form1 : Form
        {
            private FilterInfoCollection videoDevices;
            private VideoCaptureDevice videoSource;
            private bool stopREC = true;
            private bool createNewFile = true;
    
            private string videoFileFullPath = string.Empty; //视频文件全路径
            private string imageFileFullPath = string.Empty; //图像文件全路径
            private string videoPath = @"E:video"; //视频文件路径
    
            private string videoFileName = string.Empty; //视频文件名
            private string imageFileName = string.Empty; //图像文件名
            private string drawDate = string.Empty;
            private VideoFileWriter videoWriter = null;
    
            public delegate void MyInvoke(); //定义一个委托方法
    
            string g_s_AutoSavePath = AppDomain.CurrentDomain.BaseDirectory + "Capture\";
            object objLock = new object(); //定义一个对象的锁
            int frameRate = 20; //默认帧率
            private Stopwatch stopWatch = null;
            IVideoSource iVideoSource = null;
            private int flag = 0;
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                try
                {
                    // 枚举所有视频输入设备
                    videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
    
                    if (videoDevices.Count == 0)
                        throw new ApplicationException();
    
                    foreach (FilterInfo device in videoDevices)
                    {
                        tscbxCameras.Items.Add(device.Name);
                    }
    
                    tscbxCameras.SelectedIndex = 0;
                }
                catch (ApplicationException)
                {
                    tscbxCameras.Items.Add("No local capture devices");
                    videoDevices = null;
                }
            }
    
            private void toolStripButton1_Click(object sender, EventArgs e)
            {
                CameraConn();
            }
    
            private void CameraConn()
            {
                videoSource = new VideoCaptureDevice(videoDevices[tscbxCameras.SelectedIndex].MonikerString);
                videoSource.DesiredFrameSize = new Size(320, 240);
                videoSource.DesiredFrameRate = 1;
    
                videoPlayer.VideoSource = videoSource;
                videoPlayer.Start();
            }
    
            private void toolStripButton2_Click(object sender, EventArgs e)
            {
                videoPlayer.SignalToStop();
                videoPlayer.WaitForStop();
            }
    
            private void Form1_FormClosing(object sender, FormClosingEventArgs e)
            {
                toolStripButton2_Click(null, null);
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                try
                {
                    flag = 0;
                    videoSource.NewFrame += new NewFrameEventHandler(video_NewFrame);
                    
                }
                catch (Exception ex)
                {
                    MessageBox.Show("捕获图像失败!" + ex.Message, "提示");
                }
            }
            private void video_NewFrame(object sender, NewFrameEventArgs eventArgs)
            {
                Bitmap bitmap = (Bitmap)eventArgs.Frame.Clone();
                if (flag == 0)
                {
                    string img = "E://img//" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".jpg";
                    bitmap.Save(img);
                    MessageBox.Show("ok");
                    flag = 1;
                }
            }
    
           
        }
    }
    

      具体:1.调用各个dll文件

                  2.AForge.Controls生成自身控件videoPlayer

  • 相关阅读:
    day12——Python高阶函数及匿名函数
    day11——Python函数的一般形式、函数的参数
    day10——Python file操作
    day9——Python复习
    day8——Python if,while,for
    day7——Python的帮助
    day6——Python数据类型
    sqlserver执行sql文件命令(sqlcmd)
    数据库快照、游标、锁
    Linux 下根据进程名kill进程
  • 原文地址:https://www.cnblogs.com/wangzhenghua/p/4481069.html
Copyright © 2020-2023  润新知