嵌入式Linux系统下的视频采集与SDL研究应用

  • 格式:pdf
  • 大小:87.71 KB
  • 文档页数:3

嵌入式Linux系统下的视频采集与SDL研究应用刘少刚1,2,王学军2(1.哈尔滨工程大学机电工程学院,黑龙江哈尔滨150001;2.国家林业局哈尔滨林业机械研究所,黑龙江哈尔滨150086)

摘要:根据某些特殊作业现场对视频监控的需求,研究了在嵌入式Linux系统下采用分散存储方式进行视频采集的方法。针对当前嵌入式Linux系统下视频采集一般仅采用V4L存在的问题,提出了一种在嵌入式Linux系统下同时采用V4L和SDL进行视频采集的方案。本文重点解决了在仅采用V4L情况下实时显示、时间信息的获取和

事件处理难于实现或过于复杂等问题。实验结果表明,同时采用V4L和SDL在嵌入式Linux系统下进行视频采集方法可行,操作更简捷,效果更好。关键词:视频采集;V4L;嵌入式系统;SDL;USB摄像头中图分类号:TN957.52文献标识码:A文章编号:1001-4462(2008)05-0017-02

VideoCollectionandApplicationofSDLBasedonEmbeddedLinuxSystem

LIUShao-gang,WANGXue-jun(1.CollegeofMechanicalandElectricalEngineering,HarbinEngineeringUniversity,HarbinHeilongjiang150001,China;2.HarbinResearchInstituteofForestryMachinery,theStateForestryAdministration,HarbinHeilongjiang150086,China)

Abstract:Inthelightofthedemandforvideosurveillanceincertainspecialworkplaces,themethodadoptingscatterstoragetechniqueforvideocollectionunderembeddedLinuxsystemisstudied.InviewoftheseriousproblemswiththemethodthatonlyusesV4LtocarryoutvideocollectionunderLinuxsystemcurrently,theplanadoptingV4LandSDLatthesametimeforvideocollectionisproposed.Greatimportancehasbeenattachedtothesolutionstosuchproblemsasrealtimedisplay,accesstotimemessageandeventhandling,whichareeitherhardtorealizeortoocomplicatedwhenonlyV4Lisused.TheexperimentalresultshowsthatthemethodadoptingV4LandSDLsimultaneouslyforvideocollectionunderLinuxsystemisfeasible,whichfeatureseasyoperationandbettereffect.Keywords:videocollection;videoforLinux;embeddedsystem;simpledirectmedialayer;USBcamera

在某些作业现场,尤其是一些危险作业、无人值守的场合,如化工厂、红外成像森林火灾监测站、自动检测线、高速交通工具等,当发生事故或灾情后,往往由于现场被破坏以及时效性,而难以分清责任和分析事故原因,因此,对事故易发地点的连续视频监控就显得尤为重要。目前视频监控和录制主要采用摄像头、硬盘录像机、录像带等组成视频监控网络。该类视频监控网络具有工作稳定、可靠等优点,但由于事故的突发性和偶然性,以及需要监控的危险地点经常变动,所以固定视频监控网络的运行管理、维护和安装调试等方面的问题比较突出。由于在很多场合发生事故时,绝大多数需要掌握的信息都集中在事故之前很短的一段时间内,所以只需要保存好这一段时间的信息就能达到监控效果。鉴于此,我们提出了一种在嵌入式Linux系统下采用分散存储实现视频信息采集的方法,仅保留最后视频信息并结合SDL(SimpleDirectMediaLayer)实现信息采集。

1系统简介

由于嵌入式系统下的视频采集比传统的PC视频

收稿日期:2008-03-13

基金项目:国家科技部社会公益研究专项(2002DIB50121);国家“948”专项资助(2003-4-29)

第36卷第5期林业机械与木工设备Vo136No.5

2008年5月FORESTRYMACHINERY&WOODWORKINGEQUIPMENTMay2008图1采集流程图采集在实时性、稳定性、成本等方面更加优越,所以已成为近年来研究的热点,尤其是嵌入式Linux系统下的视频采集更是引人瞩目。目前嵌入式Linux系统下的视频采集均采用V4L,其虽然也能够实现基本功能,但在实时显示、获取时间信息、事件处理等方面却过于复杂,甚至难于实现。SDL作为免费的跨平台多媒体应用编程接口,由于其具有稳定、简单和灵活等特点,在游戏、影像、模拟器、样本演示、多媒体等领域的应用越来越广泛,当前在PCLinux系统下的视频采集、图像处理等方面的许多软件都采用了SDL[1]。本文所做的嵌入式Linux系统下的视频采集在采用V4L的同时引入SDL,以达到操作更简单、使用效果更好的目的。1.1系统硬件在本研究中,采用了目前国内比较常见的S3C2410处理器[2]。S3C2410具有丰富的功能和很高的性价比,它采用了ARM920T核心。在处理器丰富资源的基础上进行了相关的配置和扩展:平台配置了16MB16位的Flash和64MB32位的SDRAM;引出了1个串行接口和1个HOSTUSB接口;通过USB接口与外接USB摄像头和U盘相连。整体研究工作即基于此硬件平台[3]。1.2系统软件由于MIZI对S3C2410进行了较完善的Linux平台开发,同时Linux系统具有开放和稳定等优点,所以本研究采用Linux系统;内核采用了比较稳定的2.4.18版本;文件系统则采用专门针对NAND闪存设计的yaffs系统,其中主要包括相应的配置文件、各种模块和库等。2视频采集实现2.1采集前的准备工作因为在研究中引入了SDL,所以在进行视频采集前,除了需要对系统进行一些常规配置外(主要包括内核的支持和USB摄像头驱动的安装),还需要进行SDL移植。在常规内核配置时,必须配置videoforLinux和USB支持选项,由于采用了U盘进行存储,还应在scsi中进行相应的配置(主要是存储器的支持)。目前2.6内核的高级版本中对USB摄像头的支持是比较全面的,但在2.4内核和2.6内核的低级版本中,所支持的摄像头种类还比较少,不过都直接支持ov511芯片USB摄像头,为了研究方便,可直接采用ov511芯片摄像头[4]。2.2使用V4L进行视频采集在嵌入式Linux系统下的视频采集采用了常用的V4L。程序编写时首先应包括必要的头文件,其中定义了相应的数据结构。通过分析相关代码,可以看出V4L提供针对视频设备进行基本I/O操作的接口函数,如open、read、write、close、中断处理、内存映射及I/O通道

的控制ioctl等。

其中主要的API函数有VIDEOCGCAP、VIDEOCGPICT、VIDEOCGWIN、VIDEOCSWIN、VIDEOCSPICT、VIDIOCSYNC、

VIDEOCSBUF,分别以相应的数据结构获取或设定信

息[5]。

根据数据结构和接口函数,可以先实现打开设备、获取信息、参数设定以及采集等的各种操作,然后再进行图像的后续处理(如细化、压缩等的操作),也可以通过write函数操作写入文件。这时就会发现V4L并没有给出事件类的接口函数和时间类的接口

函数,使用V4L进行事件应用(如使用键盘操作和获取必要的时间信息)比较复杂和困难。因此,在研究中引入了SDL。

整个采集流程图如图1所示。

2.3SDL在视频采集中的应用

同V4L类似,在使用SDL时也应包括必要的头文件。在研究过程中,主要通过SDL来实现窗口的实时显示、获取时间信息和事件处理三个部分。在使用SDL时,需要在程序的开始时进行SDL的初始化。在Linux系统下,视频采集过程中需要把这部分放到打开设备之前进行[6]。

在图像采集过程中,需要根据时间信息来计算所用时间和帧率等信息,因此在图像采集过程中获取时间信息比较重要。对于获取时间信息部分,利用V4L比较复杂和困难,但用SDL则非常简单,只需通过调用函数SDL_GetTicks()即可。

SDL事件分为等待事件、事件轮询和事件状态轮

询三种,可以根据具体情况进行相关调用。在linux系统下的视频采集过程中,主要通过事件实现图像亮度、色调、对比度和移动等的操作。

查找设备打开设备获取信息参数设定

采集(read/mmap)写入文件

图像处理结束

关闭设备

林业机械与木工设备18第36卷3程序运行实验及分析

程序编写完成后,就可以通过在宿主机上使用交叉编译器编译连接使之生成可执行文件,并向目标机移植,移植成功后就可以在目标机上运行。下面是采用实验设备及软件部分的设定。①实验设备。宿主机:Linux的P4机;目标机:S3C2410处理器板;摄像头:ov511芯片;显示器:2.5英寸液晶屏;键盘:USB键盘;存贮器:清华紫光1GU盘;USBHUB。②软件设定。窗口尺寸:240×320;帧率:8fps。③实验结果。在嵌入式Linux系统下同时采用V4L和SDL进行视频采集,可以方便地通过SDL事件控制对图像进行调节,操作简单、可靠,得到的图像质量良好。4小结本文根据特殊工作现场对循环视频监控系统的需求,实现了在嵌入式Linux系统中同时采用V4L和SDL进行视频采集。程序运行实验表明该方法可行,相比单独采用V4L进行视频采集在实时显示、时间信息的获取和事件处理上更加简单便捷,更易于达到理想的效果。参考文献:[1]SDL(SimpleDirectMediaLayer)官方网站[EB/OL].http://www.libsdl.org/index.php.[2]陆云昆,张承业.嵌入式Linux下的视频图像采集[J].嵌入式系统编程,2006,(10):71.[3]郭剑,赵建.嵌入式Linux的图像采集与显示[J].现代电子技术,2006,(7):129.[4]李冰,孙建平,谭悦,等.基于嵌入式Linux与S3C2410平台的视频采集[J].2005,(6):122.[5]M.Ruiz;E.Barrera.Real-timedataacquisitionandprocessingplatformforfusionexperiments[J].FusionEngineeringandDesign.2004.[6]MichaelHSchimek,BillDirks.VideoforLinuxTwoAPISpecification.