最近打算学习一下AForge.NET,AForge.NET是一个专门为开发者和研究者基于C#框架设计的,这个框架提供了不同的类库和关于类库的资源,还有很多应用程序例子,包括计算机视觉与人工智能,图像处理,神经网络,遗传算法,机器学习,机器人等领域。
这个框架由一系列的类库组成。主要包括有:
AForge.Imaging —— 一些日常的图像处理和过滤器
AForge.Vision —— 计算机视觉应用类库
AForge.Neuro —— 神经网络计算库AForge.Genetic -进化算法编程库
AForge.MachineLearning —— 机器学习类库
AForge.Robotics —— 提供一些机器学习的工具类库
AForge.Video —— 一系列的视频处理类库
AForge.Fuzzy —— 模糊推理系统类库
AForge.Controls—— 图像,三维,图表显示控件
我这里打算就1)基于模糊系统的自动导航、2).运动检测、3)C#网络视频传输,这三个方面进行学习。会尽快把学习心得与大家分享。
基于网络视频传输的部分,我参考别人的代码已经写出了示例程序,如图:
因为下位机平台目前还没有搭建,所以无法进行传输视频的测试,等以后测试了再上传测试结果。因为我这里用的程序来自网络所以也就不把程序贴上来了。我把我学习中遇到的问题和解决方法给大家说说。
问题1:安装AForge.net之后无法找到VideoSourcePlayer控件。
方法:在VS2008 的工具中 右键->选择项-> .NET Framerwork -> 点击命名空间进行排序,名称一列选择 VideoSourcePlayer,确定即可。
问题2:定时器设定的时间为多少。
答: 为1000ms
1 private void timer1_Tick(object sender, EventArgs e) 2 { 3 // Interface 4 IVideoSource videoSource = videoSourcePlayer.VideoSource; 5 if (videoSource != null) 6 { 7 statCount[statIndex] = videoSource.FramesReceived; 8 if (++statIndex >= statLength) 9 statIndex = 0; 10 if (statReady < statLength) 11 statReady++; 12 float fps = 0; 13 for (int i = 0; i < statReady; i++) 14 { 15 fps += statCount[i]; 16 } 17 fps /= statReady; 18 statCount[statIndex] = 0; 19 fpsLabel.Text = fps.ToString("F2") + " fps"; 20 } 21 }
这段代码是用来计算刷新的帧数,首先private int[] statCount = new int[statLength]; statLength=15,用来储存已经刷新的次数。
fps /= statReady;这个用来求刷新的平均值 ,因为时间为一秒,所以得到的结果也就是标准的刷新频率。
问题3:?action=snapshot,?action=stream表示什么?
答:?action=snapshot返回的是一幅静态图片,?action=stream返回的才是连续的mjpeg流。
完整的代码大家可以从这个博客里阅读http://hi.baidu.com/lansessl/item/1e890df3e1dccf12d7ff8cab