0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

教你用ARM嵌入式设计视频监控系统

电子设计 作者:电子设计 2018-09-03 08:39 次阅读

目前,嵌入式系统视频监控中的应用越来越广泛。伴随着网络的强大功能,视频监控更侧重网络监控方案,要求体积小、远程化、成本低、功耗小、操作界面人性化等。本系统基于嵌入式Linux 平台上利用USB 摄像头采集视频图像,通过视频图像压缩及结合网络进行视频图像传输,使远程监控成为可能。

1 系统概述

视频图像监控系统由4 部分组成, 分别为视频图像采集、视频图像处理、视频图像传输、视频图像显示。视频图像采集部分由数字摄像头、USB 通道和嵌入式处理器构成、视频图像处理主要是视频图像压缩,由算法实现、视频图像传输主要利用视频服务器来实现、视频图像显示主要是在远程的主机上实现视频图像的浏览、保存和处理等,Linux 主机上由应用程序实现,Windows 主机上通过浏览器上的JAVA 程序实现。系统原理框图如图1 所示。

如何用ARM嵌入式设计视频监控系统?

图1 系统框图

2 系统硬件

CPU 处理器使用Samsung S3C2440A, 主频400 MHz,最高533 MHz;64 M SDRAM、32 bit 数据总线、SDRAM 时钟频率100 MHz;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 for Linux)是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 所示。

如何用ARM嵌入式设计视频监控系统?

图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-s 320x240-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 程序的结合能够扩充World WideWeb 的能力。

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 "

"

exit 0

5 结束语

系统采用开源的Linux 系统,降低了开发成本,可以任意裁剪和制定内核,方便移植。与传统PC 机的监控系统相比,本系统具有体积小、成本低、可靠性强等优势。本系统还具有一定的扩展性,可以增加适当的功能扩展来满足用户更高的要求, 如在图像采集端加入设置入侵检测或者报警等控制功能。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ARM
    ARM
    +关注

    关注

    134

    文章

    8648

    浏览量

    361746
  • 嵌入式
    +关注

    关注

    4981

    文章

    18271

    浏览量

    288277
  • 视频监控
    +关注

    关注

    17

    文章

    1682

    浏览量

    64213
  • 摄像头
    +关注

    关注

    59

    文章

    4606

    浏览量

    92872
收藏 人收藏

    评论

    相关推荐

    基于ARM嵌入式视频监控终端的研究

    本帖最后由 eehome 于 2013-1-5 09:58 编辑 基于ARM嵌入式视频监控终端的研究
    发表于 08-20 09:25

    基于嵌入式Linux的网络视频监控系统研究

    基于嵌入式Linux的网络视频监控系统研究
    发表于 08-20 09:37

    嵌入式视频_应_开发_系统嵌入式视频

    嵌入式视频_应_开发_系统嵌入式视频
    发表于 08-20 10:08

    【OK210申请】基于嵌入式Linux的远程视频监控系统

    申请理由:贵公司,你好,我是来自福建省一所高校的电子信息工程的学生,我的项目是基于嵌入式Linux的远程视频监控系统,但是一直苦于寻找合适的开发板来学习Linux以及开发我的项目,这个
    发表于 06-28 12:41

    【实战项目一:嵌入式视频监控系统】【初学必学】

    《实战项目一:嵌入式视频监控系统》让您彻底经过一次变革,真正理解整个视频采集的实现过程(一次让人真正地体会项目实战的洗礼,让您,彻底理解
    发表于 07-19 18:18

    如何利用B/S模式设计嵌入式视频监控系统

    的安防系统中[2]。本文设计了一种具有用户零维护、价格低廉、性能稳定等特点的嵌入式视频监控系统。该系统
    发表于 07-30 06:24

    如何设计嵌入式无线视频监控系统

    的新型视频监控系统,该系统在解决模拟视频监控系统的部
    发表于 08-09 07:47

    嵌入式视频监控系统视频服务器该怎么设计?

    机,在稳定性,可靠性方面都受到限制。近年来,随着嵌入式技术的发展,嵌入式设备体积小、集成度高、高效可靠、可移植、功耗低等一系列优点使得基于嵌入式视频
    发表于 09-03 06:54

    嵌入式网络视频监控系统怎么发展?

    视频监控系统经历了本地模拟信号监控系统,基于PC插卡的数字监控
    发表于 09-26 06:51

    嵌入式视频监控系统有什么功能?

    监控技术正在逐步取代模拟监控技术,广泛应用于各行各业。嵌入式系统以体积小、实时性强、性价比高、稳定性好等特点在社会的各个领域中得到了广泛应用。笔者设计的一种
    发表于 10-18 08:26

    基于嵌入式WEB的网络视频监控系统该如何去设计?

    基于嵌入式WEB技术的网络视频监控系统特征及原理是什么?基于嵌入式WEB技术的网络视频
    发表于 06-02 07:15

    教你做一个嵌入式linux开发板和web端来实现的视频监控系统

    本文章将教你做一个嵌入式linux开发板和web端来实现的视频监控系统。代做/辅导:毕业设计/
    发表于 11-05 07:38

    嵌入式视频监控的相关资料分享

    嵌入式视频监控目前,嵌入式系统视频监控中的应用越来
    发表于 11-08 07:10

    基于OpenCV的ARM嵌入式网络视频监控系统

    基于OpenCV的ARM嵌入式网络视频监控系统
    发表于 09-23 17:13 74次下载

    基于ARM和Linux的嵌入式远程视频监控系统的设计

    基于ARM和Linux的嵌入式远程视频监控系统的设计(嵌入式开发板如何刷程序)-本文根据大楼电梯
    发表于 07-30 12:56 7次下载
    基于<b class='flag-5'>ARM</b>和Linux的<b class='flag-5'>嵌入式</b>远程<b class='flag-5'>视频</b><b class='flag-5'>监控</b><b class='flag-5'>系统</b>的设计