• 上位机获取Mjpeg视频流程序(C#.NET语言+AForge.NET控件)(待测试)


         最近打算学习一下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

  • 相关阅读:
    mysqldump 导出数据库为DBname的表名为Tname的表结构 导出数据库的所有表的表结构
    mysqldump 备份某张表 Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions,
    nfs missing codepage or helper program, or other error
    date 增加一个小时 减少一个小时
    mysqldump 备份单个数据库
    mysql删除账户
    怎么删除某个用户的所有帖子?
    mongodb删除重复数据
    ReSharper2018破解详细方法
    激活windows和office
  • 原文地址:https://www.cnblogs.com/dreamfactory/p/2624889.html
Copyright © 2020-2023  润新知