http://avr.eefocus.com/article/11-11/3217351320716660.html

更新于2011-12-30 03:47:29

摘要: 提出一种基于ARM 嵌入式开发平台视频监控的实现方案。通过V4L2 在Linux下构建视频图像采集和显示,然后使用servfox 和spcaview 构建视频服务器,系统可在Linux 和Windows操作系统下通过窗口或者网页进行视频监控和图像抓拍。测试表明系统的监控图像清晰,并具有体积小、成本低、可靠性强等优点。
 
      目前,嵌入式系统在视频监控中的应用越来越广泛。伴随着网络的强大功能,视频监控更侧重网络监控方案,要求体积小、远程化、成本低、功耗小、操作界面人性化等。本系统基于嵌入式Linux平台上利用USB 摄像头采集视频图像,通过视频图像压缩及结合网络进行视频图像传输,使远程监控成为可能。
 
 1 系统概述
 
       视频图像监控系统由4 部分组成,分别为视频图像采集、视频图像处理、视频图像传输、视频图像显示。视频图像采集部分由数字摄像头、USB通道和嵌入式处理器构成、视频图像处理主要是视频图像压缩,由算法实现、视频图像传输主要利用视频服务器来实现、视频图像显示主要是在远程的主机上实现视频图像的浏览、保存和处理等,Linux主机上由应用程序实现,Windows 主机上通过浏览器上的JAVA 程序实现。系统原理框图如图1 所示。
 

图1 系统框图
 
 2 系统硬件
 
         CPU 处理器使用SamsungS3C2440A, 主频400 MHz,最高533 MHz;64 M SDRAM、32 bit 数据总线、SDRAM 时钟频率100MHz;256 M/1 GB Nand Flash, 掉电非易失、2 M NorFlash,掉电非易失;统宝3.5真彩LCD,屏集成4 线电阻式触摸屏, 屏幕分辨率可以达到1024×768 象素;100 M 以太网RJ-45 接口(采用DM9000网络芯片)、串行口、USB Host、USB Slave B 型接口、SD 卡存储接口、路立体声音频输出接口, 麦克风接口、JTAG接口、4 USER Leds、6 USER buttONs(带引出座)、I2C 总线AT24C08 芯片、20 pin摄像头接口;摄像头用良田,兼容SN9C20X 系列芯片的驱动,本系统的内核中集成了该驱动。
 
 3 系统软件
 
3.1 Linux 内核的移植
        移植新内核主要是为了给LCD以及摄像头添加相应的驱动支持,在Fedora 9 中打开内核的目录,使用缺省配置文件进行配置:在内核中添加V4L 支持、添加万能USB摄像头驱动GSPCA。
 3.2 基于V4L2 的图像采集程序
       系统使用的交叉编译工具为arm-linux-gcc-4.3.2.设计使用到的应用程序都要通过该编译器编译后下载到开发板上运行。将编好的应用程序V4L2.c交叉编译后下载到板。
        V4L(Video forLinux)是Linux 下提供的一个音视频接口规范,所有的音视频驱动编写都要用到这些接口。
        V4L 从2.4.1.x 的内核版本中开始出现,设计使用的Video for Linux2(简称V4L2)是V4L 的改进版,修复了第一代中的部分BUG。
        设计的图像采集及处理程序主要基于V4L2 架构,通过对一些ioctl 函数的调用来实现视频设备的打开,图像的采集处理,图像的显示等。几个主要的ioctl 函数的简介:
        1)ioctl(fd,VIDIOC_S_FMT,&fmt):用于设置图像的格式。
        2)ioctl(fd,VIDIOC_REQBUFS, &req):向内存申请缓冲区,申请的buffer 个数存在count 中。
        3)ioctl(fd,VIDIOC_QUERYBUF, &buf):查询已经分配的V4L2 的视频缓冲区的相关信息,包括视频缓冲区的使用状态、在内核空间的偏移地址、缓冲区长度等。
        4)ioctl(fd, VIDIOC_QBUF,&buf):放一个空的视频缓冲区到视频缓冲区输入队列中,函数执行成功后,指令的视频缓冲区进入视频输入队列,在启动视频设备拍摄图像时,相应的视频数据被保存到视频输入队列相应的视频缓冲区中。
        5)ioctl(fd,VIDIOC_STREAMON, &type):启动视频采集命令,应用程序调用VIDIOC_STREAMON启动视频采集命令后,视频设备驱动程序开始采集视频数据,并把采集到的视频数据保存到视频驱动的视频缓冲区中。
        图像采集处理流程图如图2 所示。
 

 图2 图像采集处理流程图
3.3 网络服务器
        系统采用Boa 服务器。Boa是一种非常小巧的Web 服务器, 其可执行代码只有大约60 kB 左右。作为一种单任务Web 服务器,Boa只能依次完成用户的请求,Boa 支持CGI,能够为CGI 程序fork 出一个进程来执行。板上移植该服务器,Boa服务器默认开机自动运行,配置conf 文件。
        服务器端应用程序使用servfox,servfox-R1_1_3 解压修改Makefile文件:CC=arm-linux-gcc,编译后得到可执行文件servfox,下载到板上,输入命令chmod +x servfox为它添加可执行属性。
        客户端程序使用spcawiew,该程序用于在Linux 主机上对服务器进行监控,无需移植。在Linux上编译spcaview.由于此软件包依赖与libsdl,所以在安装spcaview 之前,需要安装SDL-1.2.13.安装spcaview 软件后,在源文件目录上有3 个可执行文件,spcacat:简单图片的抓取工具,不能用于网络监视客户端,Spcaserv:流媒体服务器,Spcaview:用来纪录数据流,也能用来播放数据,也能作为网络监视客户端用。
 
4 监控过程
 
4.1 在Linux 操作系统上的监控
       正常启动运行开发板,运行服务器端程序servfox:servfox-d /dev/video0-s 320x240-w 7070。
       在Linux 上运行: 。/spcaview-g-s320x240-w 10.1.91.230:7070
       其中10.1.91.230 是服务器的IP地址,这样就可以在PC机上看见USB 摄像头采集进来的数据了。
       系统是装在虚拟机中的fedora 9 linux系统,可以流畅地观察到摄像头监控区域的情况。
4.2 Windows 操作系统上的监控
      对于网络监控的客户端,能够跨平台的工具目前只有浏览器,通过浏览器来监控,无论是Linux、Windows、MacOS或者其他的UNIX 系统,只要有图形界面的浏览器,在桌面环境下都可以对远程的摄像头所“控制”的范围进行监控。
       Mini2440 上已经有Boa服务器可供使用,Spcaview 中的http-java-applet 文件夹中已经包含了一个可以监控使用的web页面,将该文件夹复制到Boa 服务器的主文件夹/www 下。
       由于http-java-applet 文件夹内含的WEB主页面(Index.html)包含了JAVA 控件,所以先在主机上安装JAVA 环境,让浏览器支持JAVA 插件。
       安装好JRE 后,在浏览器的地址栏上输入服务器地址,即可实现远程监控。
4.3 远程抓拍
       通过web 表单提交CGI 来运行应用程序。
       通用网关接口(CGI)规范允许Web服务器执行其他的程序并将它们的输出储存在发送给Web 浏览器的文本、图形和音频中。服务器与CGI 程序的结合能够扩充WorldWideWeb 的能力。
       CGI 程序可以由C、Perl 或者UNIX Shell脚本等流行编程语言编写。
       在本设计中,网页上的按钮shoot the picture提交了一个名为V4L 的CGI 文件v4l.cgi,该文件是用shell脚本编写的,用于在板上运行已编译好的图像采集程序并对抓拍的图片返回到新打开的网页中进行查看。
       Shell 脚本(v4l.cgi)内容如下:
       #! /bin/sh
       /www/http-java-applet/v4l2
       echo “Content-type: text/html;charset=gb2312”
       echo
       echo “……”
       echo “
 ”< >< src="”1.jpg“">
       exit 0
 
5 结束语
 
        系统采用开源的Linux系统,降低了开发成本,可以任意裁剪和制定内核,方便移植。与传统PC机的监控系统相比,本系统具有体积小、成本低、可靠性强等优势。本系统还具有一定的扩展性,可以增加适当的功能扩展来满足用户更高的要求,如在图像采集端加入设置入侵检测或者报警等控制功能。

基于Linux的视频监控系统构建方法相关推荐

  1. Linux下基于qt的视频监控系统

    目录 一.原始需求 二.环境安装 2.1 qt安装 2.2 opencv安装 三.系统设计 3.1. 整体流程设计 3.2 .数据传输交互流程 3.3 .数据库设计 四.关键代码 4.1.如何实现通信 ...

  2. linux移动视频监控系统,基于Linux的高速公路视频移动监控系统的研究与实现

    摘要: 在高速公路建设.维修和突发事件的处理上,由于涉及地域范围广.地理情况复杂以及监控点变动大等特点,使有线监控手段在高速公路实际应用中遇到一些困难,加之使用传统视频监控设备涉及布线繁琐.体积大.移 ...

  3. 基于ARM的视频监控系统的设计与实现

    http://61ic.com/Technology/embed/201111/39092.html 摘要: 提出一种基于ARM 嵌入式开发平台视频监控的实现方案.通过V4L2 在Linux 下构建视 ...

  4. 基于python的视频监控系统_Python远程视频监控程序的实例代码

    老板由于事务繁忙无法经常亲临教研室,于是让我搞个监控系统,让他在办公室就能看到教研室来了多少人.o(>﹏<)o||| 最初我的想法是直接去网上下个软件,可是找来找去不是有毒就是收费,无奈技 ...

  5. 基于python的视频监控系统_Python远程视频监控程序

    老板由于事务繁忙无法经常亲临教研室,于是让我搞个监控系统,让他在办公室就能看到教研室来了多少人.o(>﹏<)o||| 最初我的想法是直接去网上下个软件,可是找来找去不是有毒就是收费,无奈技 ...

  6. 基于python的视频监控系统_Python实现微信监控报警系统

    概述: 本文主要分享一下博主在学习wxpy 的过程中开发的一个小程序.博主在最近有一个监控报警的需求需要完成,然后刚好在学习wxpy 这个东西,因此很巧妙的将工作和学习联系在一起. 博文中主要使用到的 ...

  7. 基于智能矿山电力监控系统的设计与应用方法

    摘要:随着煤矿建设的智能化程度越来越高,构建智能电力监控系统实现对矿山生产的有效监控至关重要.首先分析了矿山电力监控系统存在的主要问题,其次重点介绍了基于智能矿山电力监控系统的设计过程,后提出了加强智 ...

  8. 基于ARM的远程视频监控系统的设计

    http://www.21ic.com/app/mcu/201208/135975.htm 摘要:在ARM 微处理器平台上移植嵌入式Linux 操作系统,完成视频采集任务,并以服务器方式将图像发送到网 ...

  9. 基于嵌入式Linux的测温系统,基于嵌入式Linux的图像监控系统

    设计.发明的目的和基本思路.创新点.技术关键和主要技术指标 随着嵌入式技术的快速发展,产生了基于嵌入式系统的远程图像视频监控系统,为信息产业,管理行业.监控行业提供了快捷.高效.廉价的服务.丰富的网络 ...

最新文章

  1. 学计算机应用英语词汇,计算机应用常用英语词汇 10
  2. pycharm中的requirements.txt文件—如何生成及导入
  3. 真正的自重...小偷可以灭绝
  4. 迅雷的声音:摆脱视频产业的经济化困境
  5. 相机标定(2)opencv2实现
  6. C/C++库函数math用法案例篇一
  7. python正则库安装_python中正则表达式regex库的使用
  8. 一步一步实现iOS微信自动抢红包(非越狱)
  9. Paper | Multitask learning
  10. Windows NT引导过程源代码分析(一)
  11. 洛谷P1438 无聊的数列
  12. JZOJ 1008 1010
  13. 怎么做安全生产月PPT专题课件?
  14. Power BI----认识Power BI
  15. to 管理员:网站的“技术区文章列表RSS”有问题 我用GUSH连不上!
  16. visa基本函数操作
  17. 发那科机器人协同作业程序,博途西门子1200搭配-威纶通触摸屏
  18. 车载导航不支持播放全部的mp3音乐的解决办法--------fwqlzz love is for ever
  19. 如何批量修改文件名-通过批处理文件实现
  20. Office365客户端激活失败

热门文章

  1. 杰理之静电测试等级【篇】
  2. wget 整站抓取的好工具
  3. nodejs+vue校园新闻发布网站和投稿系统源码
  4. 【Proteus】DS18B20简易温控器
  5. Datawhale-mysql-08
  6. 攻克强化学习技术难题记录
  7. 性能测试知识问题整理(三)
  8. MOSFET 和 IGBT 栅极驱动器电路的基本原理学习笔记(五)交流耦合栅极驱动电路
  9. 最新彩虹秒赞 V7.27免授权源码
  10. android微信顶端导航栏,navigation-bar