首页 > 编程语言 >C#调用电脑摄像头拍照

C#调用电脑摄像头拍照

时间:2024-05-09 14:00:14浏览次数:24  
标签:拍照 C# void AForge videoDevices videoSourcePlayer1 摄像头

1.打开VS,新建一个Form窗体,工具->NuGet包管理工具->管理解决方案的NuGet包,在浏览里搜索AForge.Controls、AForge.Video.DirectShow,安装AForge.Controls和AForge.Video.DirectShow

2.安装AForge组件完成后,VS工具箱会新增AForge控件,把AForge.NET中的VideoSourcePlayer拖到Form窗体上

 

 3.关键代码

        #region 变量
        /// <summary>
        /// 摄像头设备集合
        /// </summary>
        FilterInfoCollection videoDevices;

        /// <summary>
        /// 捕获设备资源
        /// </summary>
        VideoCaptureDevice videoSource;

        /// <summary>
        /// 处理图片
        /// </summary>
        Bitmap bitImg;
        #endregion


        /// <summary>
        /// 先检测摄像头
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Form1_Load(object sender, EventArgs e)
        {
            //检测电脑所有的摄像头
            videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
            MessageBox.Show("检测到了【" + videoDevices.Count.ToString() + "】个摄像头");

            //获取需要拍照的设备
            videoSource = new VideoCaptureDevice(videoDevices[0].MonikerString);
            videoSourcePlayer1.VideoSource = videoSource;

            //启动摄像头
            videoSourcePlayer1.Start();
        }

        /// <summary>
        /// 拍照
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            //拍摄并获取图片
            bitImg = videoSourcePlayer1.GetCurrentVideoFrame();
        }


        /// <summary>
        /// 关闭摄像头
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Click(object sender, EventArgs e)
        {
            ShutCamera();
        }

        /// <summary>
        /// 关闭并释放摄像头
        /// </summary>
        public void ShutCamera()
        {
            if (videoSourcePlayer1.VideoSource != null)
            {
                videoSourcePlayer1.SignalToStop();
                videoSourcePlayer1.WaitForStop();
                videoSourcePlayer1.VideoSource = null;
            }
        }

  

 

标签:拍照,C#,void,AForge,videoDevices,videoSourcePlayer1,摄像头
From: https://www.cnblogs.com/mengzhixingping/p/18182007

相关文章

  • GCC编译C++步骤
    在使用GCC编译器编译多个源文件时,你需要将所有需要编译的源文件列出,并在命令行中将它们一起传递给GCC。GCC会将这些源文件编译成目标文件(.o文件),然后链接成最终的可执行文件或动态库。下面是一个示例命令行:bashCopycodeg++-cfile1.cppfile2.cppfile3.cpp在这个......
  • AGC005D ~K Perm Counting
    Statement:若一个有\(n\)个元素的排列\(P\)满足对于任意\(i(1\len\len)\)都有\(|P_i-i|\nek\),则这个排列是合法的。现给定\(n,k\),问有多少个合法的排列。Solution:神仙题啊。考虑容斥。钦定有\(i\)个位置不满足条件,即满足\(|P_i-i|=k\)。这里有一步......
  • 会充电的CANoe-赋能新能源汽车,高效完成即插即充(PnC)智能充电功能测试
     ISO15118-2标准中描述的PnC功能,可以实现插枪即充电,识别、计费信息、充电参数都通过高级别通信在EV和EVSE之间自动交换。简化了电动汽车的充电过程,提高了用户体验,为电动汽车行业带来了更智能、更便捷的充电解决方案。 然而,电动汽车和充电站之间要实现自动通信和计费,必须交......
  • [LeetCode] 最短的桥 双BFS Java
    Problem:934.最短的桥目录思路复杂度Code思路先找到第一个岛屿,根据每一个岛屿的岛屿块的位置多源查找这个块与第二个岛屿的距离,先找到的就是最少的距离同时,将已遍历过的岛屿标记为-1,避免重复入队复杂度时间复杂度:添加时间复杂度,示例:$O(n^2)$空间复杂度:添......
  • C:$Mft(NTFS主文件表)C:$LogFile(NTFS卷日志)C:$BitMap(NTFS可用空间映射) C:$Mft$BITMAP C
    C:$Mft(NTFS主文件表)是NTFS文件系统中的一个重要组成部分。它是一个特殊的系统文件,用于记录NTFS分区中所有文件和目录的元数据信息。MFT实际上是MasterFileTable的缩写,意为主文件表。在NTFS文件系统中,每个文件和目录都有一个对应的记录,这些记录存储在MFT中。MFT中的每个记录......
  • 如何写好Simulation证明(二): 半诚实模型下MPC的定义
    3.SecureComputation–SimulationforSemi-honestAdversaries我们在这里考虑的模型是staticsemi-honest敌手下的两方安全计算.这样的敌手能够在协议开始之前决定控制某一方,并且需要按照协议的描述执行.需要注意的是,这是一个非常弱的假设.如果敌手没有按照协议流......
  • socket TCP 网络编程 笔记
    1.宏观目的:实现简单的TCP通信我们需要server.c和client.c2.server.c/**socket*bind*listen*accept*send/recv*/#include<stdio.h>#include<sys/types.h>#include<sys/socket.h>#include<string.h>#include<netinet/in.h>......
  • TLP元素与PCIE数据流
    不同于并行总线,PCIe这样的串行总线不使用总线上的控制信号来表示某时刻链路上正在发生什么。相反地,PCIe链路上的发送方发出的比特流必须要有一个预期的大小,还要有一个可供接收方辨认的格式,这样接收方才能理解比特流的内容。此外,PCIe在传输数据包时并不使用任何直接握手机制(imme......
  • LeetCode 1186. Maximum Subarray Sum with One Deletion
    原题链接在这里:https://leetcode.com/problems/maximum-subarray-sum-with-one-deletion/description/题目:Givenanarrayofintegers,returnthemaximumsumfora non-empty subarray(contiguouselements)withatmostoneelementdeletion. Inotherwords,youwa......
  • C# - 委托与事件
    委托与事件委托classProgram{staticvoidMain(string[]args){Publisherpublisher=newPublisher("篮球先锋报");ObserverobserverA=newObserver("老A");publisher.Magazine+=observerA.RecvMagazine;O......