文档章节

c# 利用AForge.NET组件操作摄像头

卯金刀GG
 卯金刀GG
发布于 2017/03/17 17:05
字数 272
阅读 160
收藏 1

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

using AForge.Video;

using AForge.Video.DirectShow;

using AForge.Imaging;

using AForge.Imaging.Filters;

using System.IO;

 

namespace Camera

{

    public partial class Form1 : Form

    {

        private FilterInfoCollection videoDevices;

 

        public VideoCaptureDevice videoSource;  

        private int flag = 1;

        private string dirc = System.AppDomain.CurrentDomain.BaseDirectory + "JPG"//截图保存的目录  

 

        public Form1()

        {

            InitializeComponent();

        }

 

        private void Form1_Load(object sender, EventArgs e)

        {

            if (!Directory.Exists(dirc))

                Directory.CreateDirectory(dirc);  

 

            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;

 

            videPlayer.VideoSource = videoSource;

            videPlayer.Start();

        }

 

        private void toolStripButton2_Click(object sender, EventArgs e)

        {

            videPlayer.SignalToStop();

            videPlayer.WaitForStop();

        }

 

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)

        {

            toolStripButton2_Click(nullnull);

        }

 

        private void toolStripButton3_Click(object sender, EventArgs e)

        {

            //不懂截图,但还是给你简单完善了下

            flag = 0;

            if (videoSource == null)

            {

                MessageBox.Show("请先连接摄像头");                

            }

            else if (!videoSource.IsRunning)

            {

                MessageBox.Show("摄像头已经关闭,请重新打开");

            }

            else

            {

                videoSource.NewFrame += new NewFrameEventHandler(video_NewFrame);

            }

        }

 

        private void video_NewFrame(object sender, NewFrameEventArgs eventArgs)

        {

            Bitmap bitmap = (Bitmap)eventArgs.Frame.Clone();

            if (flag == 0)

            {

                string img = dirc + "/" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".jpg";

                bitmap.Save(img);

                flag = 1;

            }

        

    }

}

本文转载自:

共有 人打赏支持
卯金刀GG
粉丝 26
博文 236
码字总数 56126
作品 0
昌平
程序员
私信 提问
如何编程(.Net)获取摄像头变焦后的图像

利用AForge.Net实现摄像头图像获取很容易,但是否有相关开源库能够控制摄像头变焦,并获取当前焦距的图像。向大牛咨询一下,哈哈~摄像头为微软LifeCam HD3000,硬件说明支持变焦...

qiankj
2012/06/02
1K
2
人工智能之基于face_recognition的人脸检测与识别

不久乘高铁出行,看见高铁火车站已经实现了“刷脸进站”,而且效率很高,很感兴趣,今天抽时间研究一下,其实没那么复杂。 我基本上是基于https://github.com/ageitgey/face_recognition上的...

狗子2018
2018/05/17
0
0
视频处理控件TVideoGrabber如何并行处理多摄像头

大家都知道 TVideoGrabber是一款支持包括C#、.NET、VB.NET、C++、Delphi、C++Builder和ActiveX平台在内的视频处理控件,可以捕捉视频,也可以作为多媒体播放器。个人比较觉得不错的是视频源的...

菜鸟的春天
2013/08/14
0
0
Fixcel电子表单&EBMIDE——处理多媒体输入与文件索引服务

图片 使用图片的需求情景有很多种,例如:登记客户的身份证,营业执照,头像;记录合同或文档的影印件;记录商品的相片等等。 在Fixcel电子表单中,使用图片组件能够轻松完成图片的输入。 支...

彭博
2012/03/09
112
0
【转载】 C#工具类:使用iTextSharp操作PDF文档

iTextSharp是一个用于操作PDF文件的组件DLL程序,在C#程序中可以引用iTextSharp组件,用于开发与PDF文件相关的报表等功能,利用iTextSharp组件提供出来的方法接口,我们可以实现很多与PDF文档...

江湖逍遥
03/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

容器服务

简介 容器服务提供高性能可伸缩的容器应用管理服务,支持用 Docker 和 Kubernetes 进行容器化应用的生命周期管理,提供多种应用发布方式和持续交付能力并支持微服务架构。 产品架构 容器服务...

狼王黄师傅
昨天
3
0
高性能应用缓存设计方案

为什么 不管是刻意或者偶尔看其他大神或者大师在讨论高性能架构时,自己都是认真的去看缓存是怎么用呢?认认真真的看完发现缓存这一块他们说的都是一个WebApp或者服务的缓存结构或者缓存实现...

呼呼南风
昨天
12
0
寻找一种易于理解的一致性算法(扩展版)

摘要 Raft 是一种为了管理复制日志的一致性算法。它提供了和 Paxos 算法相同的功能和性能,但是它的算法结构和 Paxos 不同,使得 Raft 算法更加容易理解并且更容易构建实际的系统。为了提升可...

Tiny熊
昨天
3
0
聊聊GarbageCollectionNotificationInfo

序 本文主要研究一下GarbageCollectionNotificationInfo CompositeData java.management/javax/management/openmbean/CompositeData.java public interface CompositeData { public Co......

go4it
昨天
3
0
阿里云ECS的1M带宽理解

本文就给大家科普下阿里云ECS的固定1M带宽的含义。 “下行带宽”和“上行带宽” 为了更好的理解,需要先给大家解释个词“下行带宽”和“上行带宽”: 下行带宽:粗略的解释就是下载数据的最大...

echojson
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部