aforge net(AForge.NET的特点)

2025-03-14 03:20:03 0

aforge net(AForge.NET的特点)

本文目录

AForge.NET的特点

该框架架构合理,易于扩展,涉及多个较前沿的技术模块,可以为相关开发人员或科研人员的工作提供极大便利。该框架使用LGPLv3 协议,2.0以前版本遵循GPLv3 协议,如果对于协议有协商需要可以联系项目作者。

AForge.NET的介绍

AForge.NET是一个专门为开发者和研究者基于C#框架设计的,这个框架提供了不同的类库和关于类库的资源,还有很多应用程序例子,包括计算机视觉与人工智能,图像处理,神经网络,遗传算法,机器学习,机器人等领域。

x64 平台 win10 vs2012 c#(.NET 4.5框架)开发视频录制软件使用AForge.Net

AForge.video依赖于AForge (core library) 2.2.5。

你需要同时引用Aforge核心库,才能使用Aforge.video。

我上传到附件里,你下载引用它。

c# 利用AForge.NET组件操作摄像头,报错:未引用实例

//看了下你的代码,错误的原因就是连接的时候重新定义了一个对象。稍改下就好。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.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(null, null);        }        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;            }        }     }}

AForge.NET的简介

AForge.NET是一个专门为开发者和研究者基于C#框架设计的,他包括计算机视觉与人工智能,图像处理,神经网络,遗传算法,机器学习,模糊系统,机器人控制等领域。

AForge.NET的参考资料

AFORGE .NET 的资料相当丰富,官方SVN自带例子若干,博客园,51CTO等技术网站均有大量相关文章 。下面是一些示例展示。1.基于符号识别的3D现实增强技术2.基于模糊系统的自动导航3.运动检测4.2D增强技术

Aforge.net 调用pYthon

可以。.NET环境可以调用Python,叫做IRONPython,Python环境下,无法调用C#,C#是编译型语言,Python是解释型语言,也就是脚本语言。

AForge.net如何加到C#工程里边

首先用到AForge类库下载地址

然后引用AForge,AForge.Controls(这个是控件,可以添加到工具箱中),AForge.Imaging,AForge.Video,AForge.Video.DirectShow;

然后直接上代码

view plain copy print?

  • private FilterInfoCollection videoDevices;  

  • private VideoCaptureDevice videoSource;  

  • public int selectedDeviceIndex = 0;  

  • private FilterInfoCollection videoDevices;
  •        private VideoCaptureDevice videoSource;
  •        public int selectedDeviceIndex = 0;
  • 下面是获取设备

    view plain copy print?

  • public FilterInfoCollection GetDevices()  

  • {  

  • try  

  • {  

  • //枚举所有视频输入设备  

  • videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);  

  • if (videoDevices.Count != 0)  

  • {  

  • LogClass.WriteFile(“已找到视频设备.“);  

  • return videoDevices;  

  • }  

  • else  

  • return null;  

  • }  

  • catch (Exception ex)  

  • {  

  • LogClass.WriteFile(“error:没有找到视频设备!具体原因:“ + ex.Message);  

  • return null;  

  • }  

  • }  

  • public FilterInfoCollection GetDevices()
  •         {
  •             try
  •             {
  •                 //枚举所有视频输入设备
  •                 videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
  •                 if (videoDevices.Count != 0)
  •                 {
  •                     LogClass.WriteFile(“已找到视频设备.“);
  •                     return videoDevices;
  •                 }
  •                 else
  •                     return null;
  •             }
  •             catch (Exception ex)
  •             {
  •                 LogClass.WriteFile(“error:没有找到视频设备!具体原因:“ + ex.Message);
  •                 return null;
  •             }
  •         }
  • 选择设备,然后连接摄像头

    view plain copy print?

  • 《p》 /// 《summary》  

  • /// 连接视频摄像头  

  • /// 《/summary》  

  • /// 《param name=“deviceIndex“》《/param》  

  • /// 《param name=“resolutionIndex“》《/param》  

  • /// 《returns》《/returns》  

  • public VideoCaptureDevice VideoConnect(int deviceIndex = 0, int resolutionIndex = 0)  

  • {  

  • if (videoDevices.Count 《= 0)  

  • return null;  

  • selectedDeviceIndex = deviceIndex;  

  • videoSource = new VideoCaptureDevice(videoDevices.MonikerString);《/p》《p》            return videoSource;  

  • }《/p》  

  • 《p》 /// 《summary》
  •         /// 连接视频摄像头
  •         /// 《/summary》
  •         /// 《param name=“deviceIndex“》《/param》
  •         /// 《param name=“resolutionIndex“》《/param》
  •         /// 《returns》《/returns》
  •         public VideoCaptureDevice VideoConnect(int deviceIndex = 0, int resolutionIndex = 0)
  •         {
  •             if (videoDevices.Count 《= 0)
  •                 return null;
  •             selectedDeviceIndex = deviceIndex;
  •             videoSource = new VideoCaptureDevice(videoDevices.MonikerString);《/p》《p》            return videoSource;
  •         }《/p》
  • view plain copy print?

  • //抓图,拍照,单帧  

  • public void GrabBitmap(string path)  

  • {  

  • if (videoSource == null)  

  • return;  

  • g_Path = path;  

  • videoSource.NewFrame += new NewFrameEventHandler(videoSource_NewFrame);  

  • }  

  • //抓图,拍照,单帧
  • public void GrabBitmap(string path)
  •        {
  •            if (videoSource == null)
  •                return;
  •            g_Path = path;
  •            videoSource.NewFrame += new NewFrameEventHandler(videoSource_NewFrame);
  •        }
  • view plain copy print?

  • void videoSource_NewFrame(object sender, AForge.Video.NewFrameEventArgs eventArgs)  

  • {  

  • Bitmap bmp = (Bitmap)eventArgs.Frame.Clone();  

  • string fullPath = path + “temp\\“;  

  • if (!Directory.Exists(fullPath))  

  • Directory.CreateDirectory(fullPath);  

  • string img = fullPath + DateTime.Now.ToString(“yyyyMMdd hhmmss“) + “.bmp“;  

  • bmp.Save(img);  

  • void videoSource_NewFrame(object sender, AForge.Video.NewFrameEventArgs eventArgs)
  •        {
  •            Bitmap bmp = (Bitmap)eventArgs.Frame.Clone();
  •            string fullPath = path + “temp\\“;
  •            if (!Directory.Exists(fullPath))
  •                Directory.CreateDirectory(fullPath);
  •            string img = fullPath + DateTime.Now.ToString(“yyyyMMdd hhmmss“) + “.bmp“;
  •            bmp.Save(img);
  • view plain copy print?

  • //如果这里不写这个,一会儿会不停的拍照,  

  • videoSource.NewFrame -= new NewFrameEventHandler(videoSource_NewFrame);  

  • }  

  • //如果这里不写这个,一会儿会不停的拍照,
  •            videoSource.NewFrame -= new NewFrameEventHandler(videoSource_NewFrame);
  •        }
  • 这样就完成了操作摄像头的工作

    但是发现一个问题,如果要拍照得到的照片先要处理在保存,这里就有问题了,所以需要在界面前台中添加控件,医用AForge.Controls,然后添加到工具箱,然后将VideoSourcePlayer控件拖到窗体中,想要得到单张图像处理:

    Bitmap bmp = videoSourcePlayer1.GetCurrentFrame();

    这样就可以拿来处理了,AForge类库是非常的强大,这里只是冰山一角,文章不足之处还请大家多多指正,欢迎提出宝贵意见和建议。谢谢。。。

aforge net(AForge.NET的特点)

本文编辑:admin

更多文章:


porter官网(I DO官网背景音乐是什么歌名呢)

porter官网(I DO官网背景音乐是什么歌名呢)

本文目录I DO官网背景音乐是什么歌名呢ido钻戒官网背景音乐浏览哪些网站可以帮助自己学会搭配衣服,提升自己品味porter international 是个什么牌子I DO官网背景音乐是什么歌名呢歌曲:I do 歌手:菅野洋子 多年前,I

2025年2月16日 10:10

shell入门教程(powershell怎么从入门到精通)

shell入门教程(powershell怎么从入门到精通)

本文目录powershell怎么从入门到精通Shell脚本基础有人有教程吗powershell怎么从入门到精通简单说说我的学习经验:1)一定要找一个入门的书籍,先熟悉powershell是什么,命令怎么查,怎么用(推荐powershell实

2025年3月13日 15:30

景逸论坛汽车之家(东风风行景逸价格大概是多少)

景逸论坛汽车之家(东风风行景逸价格大概是多少)

本文目录东风风行景逸价格大概是多少景逸1.5XL这车怎么样东风风行景逸车怎么样东风风行景逸车怎么样呢东风风行景逸suv怎么样东风景逸提车注意事项以及验车的步骤 汽车之家景逸SUV怎么样东风风行景逸这款车的质量怎么样东风风行景逸价格大概是多少

2025年3月11日 15:30

fastdfs怎么读(fastdfs java 怎么使用)

fastdfs怎么读(fastdfs java 怎么使用)

本文目录fastdfs java 怎么使用fastdfs 怎么查看tracker服务nginx安装成功fastdfs怎么配置fastdfs怎么初始化配置文件fastdfs 与 为什么要搭建nginxfastdfs java 怎么使用impo

2025年3月30日 15:50

html自学网(中专学历想自学网站设计,怎么开始容易吗)

html自学网(中专学历想自学网站设计,怎么开始容易吗)

本文目录中专学历想自学网站设计,怎么开始容易吗想学习啊!有没有前端课程推荐有哪些适合大学生学习的网站推荐有没有适合计算机小白学习的网站有哪些好用的编程学习网站,最好上面全是视频教程的那种中专学历想自学网站设计,怎么开始容易吗感谢邀请!作为I

2025年3月25日 19:20

selinux的主要作用(linux系统中opt 、selinux 、srv、 media这些文件夹是做什么用的)

selinux的主要作用(linux系统中opt 、selinux 、srv、 media这些文件夹是做什么用的)

本文目录linux系统中opt 、selinux 、srv、 media这些文件夹是做什么用的linux中配置文件/etc/sysconfig/selinux 有什么作用关于linux的iptables和selinux功能说明小米关闭sel

2025年2月9日 04:40

jquery中文(jquery 获取input中文值出现乱码)

jquery中文(jquery 获取input中文值出现乱码)

本文目录jquery 获取input中文值出现乱码jquery表单验证怎么判断输入的中文jquery判断字符串是否只有中文如何在url中用jquery传递中文字符jquery中如何让判断文本框输入的是中文jquery中怎样将英文替换成中文j

2025年4月6日 06:50

besides的用法总结(关于besides的用法)

besides的用法总结(关于besides的用法)

本文目录关于besides的用法except 与 besides 的区别及用法besides的用法however, therefore, besides这些词怎么用,如however与but的用法有关于besides的用法besides p

2025年4月1日 13:40

chmod什么意思(Linux里面chmod和chown命令区别是什么)

chmod什么意思(Linux里面chmod和chown命令区别是什么)

本文目录Linux里面chmod和chown命令区别是什么chmod u+x file.sh这句中chmod、u、x分别代表什么呢chmod +s 是什么意思Linux里面chmod和chown命令区别是什么文件/目录权限设置命令:chmo

2025年4月4日 11:40

《思维导图》中提到的流程图、鱼骨图为什么实际上不是思维导图?C语言程序设计如何求最大公约数

《思维导图》中提到的流程图、鱼骨图为什么实际上不是思维导图?C语言程序设计如何求最大公约数

本文目录《思维导图》中提到的流程图、鱼骨图为什么实际上不是思维导图C语言程序设计如何求最大公约数c语言,求两个数m和n的最大公约数的流程图计算两个数m和n最大公约数的传统流程是什么求最大公约数的N-S流程图写出对应的伪代码算法C语言怎么开发

2025年3月22日 17:10

linuxecho(linux中echo是什么意思)

linuxecho(linux中echo是什么意思)

本文目录linux中echo是什么意思echo命令在linux中的应用及具体例子linux中echo是什么意思向屏幕输入一串字符,类似C语言的printf()函数。语   法:echo 说 明:echo会将输入的字符串送往标准输出。

2025年3月21日 23:30

js强制刷新当前页面(react.js怎么实现刷新当前页面)

js强制刷新当前页面(react.js怎么实现刷新当前页面)

本文目录react.js怎么实现刷新当前页面js怎么刷新当前页面如何用javascript使得删除记录后可以刷新页面js怎么写2秒后再刷新当前页面如何使用js实现页面刷新react.js怎么实现刷新当前页面window.open之后,子页面

2025年3月12日 06:00

entity framework(什么是Entity Framework)

entity framework(什么是Entity Framework)

本文目录什么是Entity FrameworkEntity Framework是什么,我电脑上安装了net4.0了,还需要装Entity Framework吗entity framework怎么读如何使用entityframeworkEnt

2025年2月26日 16:20

空调故障代码网的介绍?空调故障代码网在哪能看

空调故障代码网的介绍?空调故障代码网在哪能看

本文目录空调故障代码网的介绍空调故障代码网在哪能看空调故障代码网空调故障代码网的网址是哪个matlab源代码怎么查看matlab函数源代码求完整的matlab画图的源代码 越多越好~~~怎么调出matlab源代码空调故障代码网的介绍1、 压

2025年3月15日 22:40

attended to(attend to do 还是doing)

attended to(attend to do 还是doing)

本文目录attend to do 还是doingattend的各种解释和用法关于一些attend的用法attend to do 还是doingattend to是一个动词词组表示注意,照顾,致力于。这里的“to”是介词,所以如果要接动词的话

2025年2月23日 01:50

java泛型方法定义(java泛型的泛型方法)

java泛型方法定义(java泛型的泛型方法)

本文目录java泛型的泛型方法java泛型类和泛型方法java中如何定义一个泛型函数java中的泛型 求详细解释JAVA泛型类定义问题java中在定义泛型泛型方法是方法名前加上泛型有什么作用java泛型的泛型方法是否拥有泛型方法,与其所在的

2025年2月13日 09:50

python可以实现什么功能(现在学好python能干什么)

python可以实现什么功能(现在学好python能干什么)

本文目录现在学好python能干什么python可以干什么现在学好python能干什么python可以做什么1 首先,最基本的功能就是借助python中自带的科学计算包Numpy、padas、matplotlib等,完成复杂的数据分析。2

2025年2月21日 03:40

排序法名词解释(插入排序的相关术语)

排序法名词解释(插入排序的相关术语)

本文目录插入排序的相关术语什么是排序定级法排序法都有哪些什么是分组排序法拜托各位大神排序名词解释排序是什么意思排序法的排序法的定义插入排序的相关术语 关键码是数据元素中某个数据项的值,用它可以标示一个数据元素。通常会用纪录来标示数据元素,一

2025年2月26日 21:30

gvim配置(ubuntu---配置gvim文件是在终端输入gedit ~/gvimrc吗)

gvim配置(ubuntu---配置gvim文件是在终端输入gedit ~/gvimrc吗)

本文目录ubuntu---配置gvim文件是在终端输入gedit ~/gvimrc吗gvim 配置文件,如何改变光标默认显示的方块状,让其想在vim中显示的一样,只是一个下划线的状态!vim的配置文件在哪怎么将gvim配置成c/c++开发环

2025年2月9日 20:40

vs编程软件怎么使用(如何用vs2010编写程序)

vs编程软件怎么使用(如何用vs2010编写程序)

本文目录如何用vs2010编写程序如何使用vs2017编写c++程序用VS2013如何编写C语言vs2015软件的使用视频教程如何用VS进行程序调试vc++6.0怎么用如何用vs2010编写程序1、打开Microsoft Visual St

2025年3月27日 14:20

近期文章

本站热文

harbor,port,pier的区别?谁能解释“harbour“(港口)与“pier“(码头)的区别
2025-02-22 17:40:03 浏览:18
ibatis foreach(ibatis 批量update操作)
2025-02-10 23:40:06 浏览:7
endless rain(endless rain表达什么情感)
2025-02-14 06:00:02 浏览:6
标签列表

热门搜索