基于Qt的四路视频监控系统中客户端的设计与实现本科毕业论文

基于Qt的四路视频监控系统中客户端的设计与实现本科毕业论文

ID:261339

大小:2.68 MB

页数:30页

时间:2017-07-15

上传者:chess95660
基于Qt的四路视频监控系统中客户端的设计与实现本科毕业论文_第1页
基于Qt的四路视频监控系统中客户端的设计与实现本科毕业论文_第2页
基于Qt的四路视频监控系统中客户端的设计与实现本科毕业论文_第3页
基于Qt的四路视频监控系统中客户端的设计与实现本科毕业论文_第4页
基于Qt的四路视频监控系统中客户端的设计与实现本科毕业论文_第5页
基于Qt的四路视频监控系统中客户端的设计与实现本科毕业论文_第6页
基于Qt的四路视频监控系统中客户端的设计与实现本科毕业论文_第7页
基于Qt的四路视频监控系统中客户端的设计与实现本科毕业论文_第8页
基于Qt的四路视频监控系统中客户端的设计与实现本科毕业论文_第9页
基于Qt的四路视频监控系统中客户端的设计与实现本科毕业论文_第10页
资源描述:

《基于Qt的四路视频监控系统中客户端的设计与实现本科毕业论文》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

学号:2008840106本科毕业论文(设计)基于Qt的四路视频监控系统中客户端的设计与实现 毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作者签名:     日 期:     指导教师签名:     日  期:     使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名:     日 期:      学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权    大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名:日期:年月日导师签名:日期:年月日 指导教师评阅书指导教师评价:一、撰写(设计)过程1、学生在论文(设计)过程中的治学态度、工作精神□优□良□中□及格□不及格2、学生掌握专业知识、技能的扎实程度□优□良□中□及格□不及格3、学生综合运用所学知识和专业技能分析和解决问题的能力□优□良□中□及格□不及格4、研究方法的科学性;技术线路的可行性;设计方案的合理性□优□良□中□及格□不及格5、完成毕业论文(设计)期间的出勤情况□优□良□中□及格□不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范?□优□良□中□及格□不及格2、是否完成指定的论文(设计)任务(包括装订及附件)?□优□良□中□及格□不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义□优□良□中□及格□不及格2、论文的观念是否有新意?设计是否有创意?□优□良□中□及格□不及格3、论文(设计说明书)所体现的整体水平□优□良□中□及格□不及格建议成绩:□优□良□中□及格□不及格(在所选等级前的□内画“√”)指导教师:(签名)单位:(盖章)年月日 评阅教师评阅书评阅教师评价:一、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范?□优□良□中□及格□不及格2、是否完成指定的论文(设计)任务(包括装订及附件)?□优□良□中□及格□不及格二、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义□优□良□中□及格□不及格2、论文的观念是否有新意?设计是否有创意?□优□良□中□及格□不及格3、论文(设计说明书)所体现的整体水平□优□良□中□及格□不及格建议成绩:□优□良□中□及格□不及格(在所选等级前的□内画“√”)评阅教师:(签名)单位:(盖章)年月日 教研室(或答辩小组)及教学系意见教研室(或答辩小组)评价:一、答辩过程1、毕业论文(设计)的基本要点和见解的叙述情况□优□良□中□及格□不及格2、对答辩问题的反应、理解、表达情况□优□良□中□及格□不及格3、学生答辩过程中的精神状态□优□良□中□及格□不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范?□优□良□中□及格□不及格2、是否完成指定的论文(设计)任务(包括装订及附件)?□优□良□中□及格□不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义□优□良□中□及格□不及格2、论文的观念是否有新意?设计是否有创意?□优□良□中□及格□不及格3、论文(设计说明书)所体现的整体水平□优□良□中□及格□不及格评定成绩:□优□良□中□及格□不及格(在所选等级前的□内画“√”)教研室主任(或答辩小组组长):(签名)年月日教学系意见:系主任:(签名)年月日3 目录内容提要I1.引言12.开发平台介绍12.1嵌入式系统介绍12.2硬件平台介绍22.2.1ARM产品简介22.2.2SC2400开发板介绍22.3软件环境32.3.1QtCreator开发环境介绍32.3.2SDL开发包介绍33.系统需求分析43.1系统需求分析43.2可行性分析53.2.1技术可行性53.2.2经济可行性53.2.3操作可行性64.总体设计64.1系统总体结构设计64.2客户端UI界面设计75.详细设计75.1与服务器端的SOCKET连接75.1.1SOCKET连接过程75.1.2SOCKET创建模型85.1.3SOCKET创建代码95.2UI界面四路视频画面显示105.2.1Qt中用到的基本类的介绍105.2.2客户端UI设计105.3SDL层显示135.5.1SDL接口调用135.3.2双缓存显示机制146.系统测试146.1系统运行环境146.1.1硬件配置14v客户端(PC机配置)14v服务器端(ARM板配置)156.1.2软件环境156.2测试环境156.3代码测试与调试156.4系统运行测试156.5测试结果15结语173 致谢18附录19参考文献213 基于Qt的四路视频监控系统中客户端的设计与实现学生姓名:段利艳指导教师:张永奎康华刘燕内容提要随着计算机设备的普及和Intenet的广泛应用,多路视频监控的嵌入式系统被运用到生活的各个方面。基于Qt的四路视频监控系统系统主要由数据采集、编码、解码、显示四大模块构成,采用C/S构架。本项目作为C/S构架中的客户端(Client),主要是实现把采集的视频数据经SDL解码后再终端显示。本项目以Qt为开发平台,基于C/S构架,采用socket编程,集数据连接、数据传输、数据显示于一体,界面设计简洁大方,功能清晰。关键词远程监控LINUXC/SUII 山西大学商务学院本科毕业论文(设计)1.引言随着计算机设备的普及和Intenet的广泛应用,近年来,远程监控技术在环境监测、工业控制等领域应用越来越广泛。在监控领域,集中了多媒体技术、网络技术等多种计算机技术应用。视频监控系统以其直观、方便、信息内容丰富广泛应用于许多领域。嵌入式视频采集以其小巧灵活、低成本和高性能的特点而独具优势。本题结合Intenet技术和图像视频处理技术,开发一套嵌入式Linux的视频监控系统,实现了独立的嵌入式智能终端设备与Intenet的直接接入,通过网络与后台PC进行通信;在嵌入式智能设备终端上完成图像采集、存储等工作,并通过Intenet传输图像到后台PC。这样,前台作为视频服务器,进行数视频数据采集;后台PC作为客户端,进行数据加工和现实图像。此思路也正是网络视频服务器为核心的第三代全数字化远程视频集中监控模式的发展方向。开发平台介绍2.1嵌入式系统介绍嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等几个部分组成,用于实现对其他设备的控制、监视或管理等功能。与传统的通用计算机、数字产品相比,嵌入式系统具有低功耗、体积小、集成度高、可靠性强、软件硬件可裁剪等特点,并且一般嵌入式系统本身不具备自举开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改,必须有一套开发工具和环境才能进行开发。 一个嵌入式系统装置一般都由嵌入式计算机系统和执行装置组成,嵌入式计算机系统是整个嵌入式系统的核心,由硬件层、中间层、系统软件层和应用软件层组成。执行装置也称为被控对象,它可以接受嵌入式计算机系统发出的控制命令,执行所规定的操作或任务。执行装置可以很简单,如手机上的一个微小型的电机,当手机处于震动接收状态时打开;也可以很复杂,如SONY智能机器狗,上面集成了多个微小型控制电机和多种传感器,从而可以执行各种复杂的动作和感受各种状态信息。嵌入式操作系统是嵌入式系统的核心,豳前常用的嵌入式搡作系统主要有:VxWorks、嵌入式Linux、WindowsCE等,其中开放源代码的嵌入式Linux是应用最广泛的嵌入式操作系统之一。国外开展嵌入式Linux应用的研究较早,成果较多。例如,韩困三星公司己经率先推出了采用嵌入式Linux的掌上计算机概念样机,两美国网虎公司则推出了精简版嵌入式Linux系统Xlinux。在国内也有多家公司开展相关研究。中软总公司推出的嵌入式Linux3.0不仅满足了数控机床的需求,同时也可以应用于其他工业控制领域。另外还有华恒公司推出的嵌入式平台产品和红旗Linux等。可见,无论国内外,嵌入式Linux的研究都属于热点领域,而且对其本身的应用已经取得了可观的经济效益。2.2硬件平台介绍2.2.1ARM产品简介ARM(Advanced RISC Machines),既可以认为是一个公司的名字,也可以认为是对微处理器的通称,还可以认为是一种技术的名字。ARM处理器是一个32位元精简指令集(RISC)处理器架构,其广泛地使用在许多嵌入式系统设计。据最新消息称,微软在2012年2月29日即将发布的消费者预览版Windows8操作系统,将支持ARM系列处理器。Windows平板电脑时代即将到来。ARM处理器特点:体积小、低功耗、低成本、高性能;  支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件;  大量使用寄存器,指令执行速度更快;  大多数数据操作都在寄存器中完成;  寻址方式灵活简单,执行效率高;指令长度固定。19 山西大学商务学院本科毕业论文(设计)ARM处理器系列ARM7系列、ARM9系列、ARM9E系列、ARM10E系列;  SecurCore系列:Intel的Xscale、Intel的StrongARMARM11系列。  其中,ARM7、ARM9、ARM9E和ARM10为4个通用处理器系列,每一个系列提供一套相对独特的性能来满足不同应用领域的需求。SecurCore系列专门为安全要求较高的应用而设计。2.2.2SC2400开发板介绍SC2440是一款真正低价实用的ARM9开发板,它采用SamsungS3C2440为微处理器,并采用专业稳定的CPU内核电源芯片和复位芯片来保证系统运行时的稳定性。mini2440的PCB采用沉金工艺的四层板设计,专业等长布线,保证关键信号线的信号完整性,生产采用机器贴片,批量生产。其外观如图2.1所示:图2.1SC2440开发板外观2.3软件环境2.3.1QtCreator开发环境介绍QtCreator是跨平台的QtIDE,QtCreator是Qt被Nokia收购后推出的一款新的轻量级集成开发环境(IDE)。此IDE能够跨平台运行,支持的系统包括Linux(32位及64位)、MacOSX以及Windows。根据官方描述,QtCreator的设计目标是使开发人员能够利用Qt这个应用程序框架更加快速及轻易的完成开发任务。在功能方面,QtCreator包括项目生成向导、高级的C++代码编辑器、浏览文件及类的工具、集成了QtDesigner、QtAssistant、QtLinguist、图形化的GDB调试前端,集成qmake构建工具等。功能和优势:QtCreator主要是为了帮助新Qt用户更快速入门并运行项目,还可提高有经验的Qt开发人员的工作效率。本次开发位于Linux环境下,开发工具使用Qtcreator4.7.1版本。19 山西大学商务学院本科毕业论文(设计)2.3.2SDL开发包介绍SDL(SimpleDirectMediaLayer)是一个自由的跨平台的多媒体开发包,适用于游戏、游戏SDK、演示软件、模拟器、MPEG播放器和其他应用软件。其中包含了对图像、声音、线程等的支持,且可在多种平台上运行。因为SDL专门为游戏和多媒体应用而设计开发,所以它对图形的支持非常优秀,尤其是对高级图形的能力,比如Alpha混合、透明处理、YUV覆盖、Gamma校正等等。而且在SDL环境中能够非常方便的加载支持OpenGL的Mesa库,从而提供对二维和三维图形的支持。本系统客户端接收到的视频解压后为YUV格式,考虑到SDL在YUV覆盖方面的优势,我们选择SDL实现视频信息接收解压后的显示。3.系统需求分析3.1系统需求分析视频监控技术,随着计算机、编解码、网络传输技术的发展,目前正朝着数字化、智能化、IP化、网络化继续发展。同时视频监控同其他技术相结合,产生了许多新的应用,这有助于满足不同视频监控用户的需求。(1)视频监控数字化视频监控发展经历了模拟视频监控、半数字监控、数字监控三个阶段。对于视频监控,数字化存储带来的是一场革命性的变化。数字化是21世纪的时代特征,视频监控的数字化是监控技术的必然趋势。(2)视频监控智能化智能化是视频监控技术发展比较高级的层次。由于视频监控的数据量非常大,而用户真正需要的信息只是少部分,或者说真正需要监视的只是发生概率很少的某些事件,如何通过海量数据获取有价值的信息或者说如何从目视解释变为机器自动解释是视频监控技术发展的一个新方向。因为能把视频监控从静态的、事后取证变成动态的、实时预防和报警对用户来说显得更加重要。实际上现有的监控系统都配置有如自动位移侦测、昼夜自适应切换存储、预警设置(如可疑人物照片、指纹等)等一些低级形式的智能化功能。随着技术的发展,全智能的监控系统将要求事发前能够识别并作出正确的判断,为人们提供最为有效、及时的快速反应措施。(3)视频监控IP化视频网络、IPTV等都是网络快速发展的重要应用。随着Internet技术的发展,基于IP的视频监控更能为人们所接受,网络摄像机把压缩的视频信息通过TCP/IP协议,采用流媒体技术实现视频在网上的多路复用传输,拥有授权的用户可以随时访问互联网,实现对整个监控系统的指挥、调度、存储、授权控制等功能。鉴于IPv6在服务质量、网络性能、安全性改善提高一级IPv6对下一代Internet网络的影响,基于IP的视频监控将会成为主流。(4)视频监控无线化无线化包括两方面内容:一是监控中心的移动,通常情况下,被监控对象或是摄像机往往是固定的。而作为监控系统的使用者(监控中心)则可以是动态的,当公司领导出差在外,需了解公司生产情况时,可使用笔记本随时随地访问摄像机的IP获取信息。二是视频监控网络的无线化,随着无线宽带网络发展,基于3G的无线视频应用备受关注。当监控点分散且与监控中心距离较远,或被监控对象不固定(如出租车、运钞车等)时,利用传统有线网络的视频监控对象往往成本高且难以实现,而基于多种无线传输手段的移动视频监控实现了不可替代的优势。3.2可行性分析使用嵌入式系统实现远程视频监控技术,符合网络化数字化的特点,对公安、安防等行业有着重要的现实意义。视频监控系统一般采用基于PC机平台+视频采集卡的形式,该方案系统体积大、成本高,在远距离、多点系统中实现困难。本课题所设计的系统成本低,操作简易,安装方便,即插即用,体积小巧。整个系统采用ARM9处理器S3C19 山西大学商务学院本科毕业论文(设计)2440作为系统核心,外接红外触发开关,可以检测例如人,动物等并启动视频监控。3.2.1技术可行性软件平台由三部分组成:系统引导加载程序、嵌入式Linux内核、文件系统及应用程序。嵌入式操作系统采用Linux,开发模式采用最为普遍的宿主开发模式,即在宿主机上编译内核及应用程序然后通过网口下载到目标平台上运行,通过打印终端打印调试信息。文件系统是嵌入式系统软件平台占用存储量最大的一部分,它存储了系统配置文件、系统程序和系统外设驱动程序。嵌入式Linux内核移植好后,主要工作就变成在操作系统下编写驱动程序。系统主要由视频采集和传输部分组成。有嵌入式处理器、CMOS图像传感器、存储器、以太网接口。嵌入式处理器是韩国三星公司的基于ARM920T内核的16/32位RISC嵌入式微处理器(型号:S3C2440),主要面向高性价比、低功耗的应用。为了处理图像数据,CPU的工作频率可达400MHz。S3C2440的资源包括LCD控制器,SDRAM控制器,摄像头接口,3路串行接口,IICBUS接口,USB接口,触摸屏接口。在处理器丰富资源的基础上,还进行了相关的扩展,配置了256MFlashROM和64MBSDRAM。在嵌入式处理器的控制下,CMOS图像传感器(片上)采集到的数据经帧同步信号触发产生中断后被拷贝到SDRAM,经过MPEG-4编码后由网口发送到远端监控中心显示。3.2.2经济可行性经济可行性主要是对项目的经济效益进行评价。Linux的低成本和开放性,使其广泛应用于嵌入式系统领域。本系统客户端运行于LINUX上,而服务端运行于高性价比的SC2440的arm开发板上。3.2.3操作可行性本项目开发工具为QtCreator,作为用户终端监控平台,对本系统界面有跨平台的要求;作为网络监控手持终端,要求本系统界面能在嵌入式系统上运行。因此选用Qt编写本业务监控系统图形界面。Qt是一个多平台的C++图形用户界面应用程序框架。它完全面向对象,有良好的封装机制,模块化程度高,可重用性好,容易扩展,允许真正的组件编程,提供给应用程序开发者建立艺术级图形用户界面所需的功能,提供了信号储机制替代回调函数,使组建间信号传递更安全、简单。它拥有强大类库,而且具有一个包括Qt设计者、语言学家和详细联机开发文档的跨平台开发环境。4.总体设计4.1系统总体结构设计SC系统软件主要有两部分:系统构建模块和软件监控模块。系统构建模块包括U。BOOT的移植、linux2.6内核的移植及相关驱动程序的移植和开发(包括网卡、LCD显示屏、USB系列设备等)、根文件系统的构建和Qt用户接踞的移植。软件监控模块包括USB视频采集模块、LCD显示模块、服务端程序模块、控制端模块和网络模块。控制端可以PC机为主,也可采用另外一台ARM架构的设备为主,通过浏览器来监控与操控服务端。本系统通过网络实现客户端(PC机)与服务端(ARM9开发板)进行通信;在服务端ARM开发板直接连接摄像头,完成图像采集、编码、存储等工作,并通过Intenet传输图像到客户端PC。PC机中运行客户端界面,将解码后的帧经SDL处理后再Qt开发的窗口中显示。具体过程如图4.1所示:LINUX(PC)SC2440(ARM)Socket通信视频采集数据数据编码SDL层显示数据解码UI界面显示Uboot移植数据传输图4.1功能模块图19 山西大学商务学院本科毕业论文(设计)4.2客户端UI界面设计在四路视频监控系统中,客户端运行于LinuxPC机上。在此客户端中,实现的功能有:与服务器的连击、监控点的选择、视频画面展示等功能。视频画面显示采用双缓存显示机制,保证视频画面质量。具体功能如下图显示:客户端UI界面SDL层显示UI界面四路视频画面显示与服务器端的SOCKET连接画面显示连接选择IP设置提高视频显示质量双缓存显示图4.2UI界面功能图详细设计5.1与服务器端的SOCKET连接所谓socket通常也称作"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求。socket用于描述IP地址和端口,是一个通信链的句柄。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。5.1.1SOCKET连接过程根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。  服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。  客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。  连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。5.1.2SOCKET创建模型Server-Client模型的程序的开发原理如图5.1所示:Socket()Socket()19 山西大学商务学院本科毕业论文(设计)Bind()Conect()Listen()建立连接Write()Accept()发送数据Read()Read()接收数据Close()Write()Close()图5.1Socket编程模型服务器,使用Server_Socket监听指定的端口,端口可以随意指定(由于1024以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使用大于1024的端口),等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。客户端,使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后,关闭Socket。客户端不需要指定打开的端口,通常临时的、动态的分配一个1024以上的端口。Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。5.1.3SOCKET创建代码客户端Socket创建intopen_clientsock(char*address,intport){structsockaddr_inservadr;intclient_handle;/*Createanewsocket*/if((client_handle=socket(AF_INET,SOCK_STREAM,0))==-1)exit_fatal("ErroropeningsocketAbort!");initaddr(&servadr,address,port);if(connect(client_handle,(structsockaddr*)&servadr,sizeof(structsockaddr))==-1)exit_fatal("connectfailedAbort!");returnclient_handle;}客户端Socket关闭voidclose_sock(intsockhandle){close(sockhandle);19 山西大学商务学院本科毕业论文(设计)}Socket接收消息Intread_sock(intsockhandle,unsignedchar*buf,intlength){intbyte_read=-1;unsignedchar*ptbuf=buf;intmlength=length;inti=0;do{byte_read=read(sockhandle,ptbuf,mlength);if(byte_read>0){ptbuf=ptbuf+byte_read;mlength=mlength-byte_read;}i++;if(i>10000)return-1;}while(mlength>0);return(mlength);}Socket发送消息Intwrite_sock(intsockhandle,unsignedchar*buf,intlength){intbyte_send=-1;byte_send=write(sockhandle,buf,length);return(length-byte_send);}5.2UI界面四路视频画面显示5.2.1Qt中用到的基本类的介绍Qt是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程式,也可用于开发非GUI程式,比如控制台工具和服务器。Qt是面向对象语言,易于扩展,并且允许组件编程。Qt拥有十分强大的类库,拥有400多个面向对象的类,它们带有大多数构建跨平台服务器与客户端程序的底层基础构造函数。Qt的类库可以分成三部分:组件(Components)、框架(Framework)、效用工具(Util.ities)。其中组件包括环境、主窗VI和相关类、标准对话框、基本窗VI部件、高级窗VI部件、组织者及帮助系统;框架包象、模型、抽象窗VI部件、图形和打印、拖放、窗VI部件外观和布局管理;效用工具包括通用工具类、图像处理、日期与时间、I/O处理和杂项。在程序设计中最常用的类包括QObject、QApplication、QWidget、QMainWindow、QI.ayout、QEvent等。5.2.2客户端UI设计通过QT设计器,将所要用到的菜单、窗口进行设计实现。Qt设计器支持一种基于工程的程序设计方法。首先创建一个工程(.pro后缀的文件),有了该工程文件就可以用利用QT提供的工具qmake来生成makefiles用于编译链接。菜单、窗体设计被保存成XML格式的.ui文件并且被uic(用户界面编译器)19 山西大学商务学院本科毕业论文(设计)转换成为C++头文件和源文件。利用QT设计器完成的菜单、窗体设计只是个界面架构。其完成的特定功能还需要编程实现。在窗体的.ui文件中,可以通过增加新的功能函数实现其特有的功能。界面设计框架如图5.2所示:图5.2界面设计框架整个GUI系统只有一个GUI进程作为主进程,其他非GUI进程通过QThread在GUI进程中创建新的子进程实现相应的功能。该窗口实现类如下所示:classMainWindow:publicQMainWindow{Q_OBJECTpublic:explicitMainWindow(QWidget*parent=0);~MainWindow();privateslots:voidsetting();private:Ui::MainWindow*ui;QAction*settingAct;QMenu*fileMenu;QFrame*centralFrame;QGridLayout*gridlayout;19 山西大学商务学院本科毕业论文(设计)QVectorvideos;QVectorthreads;};本窗口进程通过启用线程来调用程序使得窗口显示画面,调用实现如下代码所示:CamThread::CamThread(longcamID,longwinID){_camID=camID;_winId=winID;}voidCamThread::run(){sleep(1);charbuff[128]={0};QSettingssettings(QString("config.ini"),QSettings::IniFormat);sprintf(buff,"cam%ld",_camID);char*value=settings.value(buff,"").toByteArray().data();sprintf(buff,"./spcaview-w%s-x0x%lx",value,_winId);_stream=popen(buff,"r");exec();}每个窗口可以进行IP设置,根据所监视服务器IP地址设置监控连接,实现效果如图5.3所示:代码设置如下:namespaceUi{classSettingDialog;}classQGridLayout;classQLineEdit;classSettingDialog:publicQDialog{Q_OBJECT图5.3IP设置界面public:explicitSettingDialog(QWidget*parent=0);~SettingDialog();19 山西大学商务学院本科毕业论文(设计)voidLoadSetting();voidSaveSetting();private:Ui::SettingDialog*ui;QGridLayout*gridlayout;QLineEdit*edit0;QLineEdit*edit1;QLineEdit*edit2;QLineEdit*edit3;};SDL层显示5.5.1SDL接口调用SDL在Linux平台下的接口:视频显示使用X11,利用XFree86DGA扩展的优势,全屏显示使用新的wMTRR加速。声音使用OSSAPI。使用clone()系统调用和SysVIPC,或者glibc-2.1的pthreads实现线程。通过SDL_GetWMInfo()取得SDL驱动接口的隐藏部分,从而可以实现诸如去除窗口要素和图标化窗口等效果。SDL库分为Video、Audio、CD-ROM、Joystick和Timer等若干子系统,除此之外,还有一些单独的官方扩充函数库。这些库由官方网站提供,并包含在官方文档中,共同组成了SDL的“标准库”:SDL_image—支持时下流行的图像格式:BMP、PPM、XPM、PCX、GIF、JPEG、PNG、TGA。SDL_mixer—更多的声音输出函式以及更多的声音格式支持。SDL_net—网络支持。SDL_ttf—TrueType字体渲染支持。SDL_rtf—简单的RTF渲染支持。本客户端留出接口,另外启用线程调用SDL层在客户端界面显示视频。具体实现如下:classSDLTestThread{public:SDLTestThread(longwinID);long_winId;FILE*_fId;};SDLTestThread::SDLTestThread(longwinId){_winId=winId;if(1){SDL_Thread*thread;19 山西大学商务学院本科毕业论文(设计)thread=SDL_CreateThread(thread_func,this);if(thread==NULL){fprintf(stderr,"无法创建线程:%s ",SDL_GetError());return;}//SDL_WaitThread(thread,NULL);}}5.3.2双缓存显示机制本客户端启用线程调用SDL显示,在窗口画法中加入双缓存机制,提高在客户端窗口中的显示速度,从视觉上保证显示质量! Try {        if ( SDL_Flip(pScreen) != 0 )    // Show the SDL window's surface.            throw SDL_GetError();    }    catch ( const char* s ){        std::cerr << "SDL_Flip() failed! " << s << std::endl;        SDL_Quit();        return -1; } SDL_Flip实现见附录!6.系统测试6.1系统运行环境6.1.1硬件配置客户端(PC机配置)处理器:InterPentium41.6GHz或更高内存:1G以上硬盘空间:80GB显卡:VGA显示适配器操作系统:LINUXCentOS5服务器端(ARM板配置)ARM9开发板:SC2440摄像头:6.1.2软件环境开发系统:LINUXCentOS5开发工具:QtCreator4.7.1环境配置包含库:SDL库、ffmpeg库、V4L库6.2测试环境操作系统:LINUXCentOS5工具包:QtCreator4.7.16.3代码测试与调试19 山西大学商务学院本科毕业论文(设计)应用程序的调试在一个应用软件的开发中尤其重要,QtCreator4.7.1程序设计语言提供了一个功能强大的内置调试器,它主要包括断点、中断表达式、监视表达式、通过代码一次经过一个语句或一个过程、显示变量和属性的值。QtCreator4.7.1程序设计语言还可在运行过程中进行编辑、设置下一个执行语句以及在应用程序处于中断模式是进行过程测试等。程序的调试主要是有助于了解在应用程序运行时正在发生的事情。调试工具提供了应用程序当前状态的快照,包括程序的用户界面的外观;程序运行时,过程中的变量、表达式和属性的值;过程如何被调用、调用的顺序及过程运行的结果。6.4系统运行测试首先连接上摄像头,以此模拟真实的监控环境来完成测试。在测试的过程中出现了一些问题,在测试中产生异常,如变量未定义、出现二意性名称等,以及出现在调试过程中的一些错误,经过反复的修改代码,按照QtCreator4.7.1程序设计语言提供的错误信息,最后调试成功。6.5测试结果通过利用摄像头来测试视频监控系统应用程序,根据结果可知视频监控系统基本可以实现对视频信息的采集存储和录制等操作,通过界面设置选项还可以对监控界面进行操作。四路视频可以稳定在客户端显示,画面清晰。测试结果如图6.1所示:图6.1系统测试结果19 山西大学商务学院本科毕业论文(设计)结语短暂而又宝贵的毕业设计就要结束了。终于在大家的帮助下,通过自己的努力把毕业设计完成了。在当中我对它有了新的认识和了解。在本次设计的全过程中,涉及了各方面的知识,大大扩展了我的知识面,同时使我学会了如何使用所学的知识去解决一些实际的问题。本系统完成初步的数据采集、编码、传输、解码、显示的工作,作为客户端的UI模块,能保证视频画面清晰流畅,界面友好,与服务端连接稳定。本客户端最大的优点就是视频显示采用双缓存机制,这样可以提高视频显示质量,在直观上不会造成画面中断,提高性能!但是,由于时间仓促和自己所学限制,本客户端界面设计不够华美,许多可扩展的功能没有在此界面中实现。本次设计,仅仅是一个基于四路的视频监控,在以后可以作为多路视频监控去扩展和改进,还有界面设计不是很精致,可以再润色使其更加美观。本客户端只是实现了基本的视频画面显示、监控IP设置等功能,以后的扩展时可以增加画面截图、视频保存等等相关操作。在这次的设计中我学到了很多书本上学不到的东西,使我受益非浅。使自己的动手能力得到很大提高。就要走出校门了,因此我对这次锻炼的机会很珍惜。19 山西大学商务学院本科毕业论文(设计)致谢在本次毕业设计中,我从指导老师张永奎老师、康华老师、刘燕老师身上学到了很多东西。他们认真负责的工作态度,严谨的治学精神和深厚的理论实践水平都使我们深感敬佩。他们无论是在理论上还是在实践中,都给予我很大的帮助,使我得到不少的提高,尤其是他们的责任心和为人师表所具备的爱心,在这次毕业设计表现无疑。这对于我以后的学习和工作都是一种帮助,感谢他们细心又耐心的辅导。还有我的班主任以及我的同学对我的帮助,只有他们的帮助我才能更好的完成本次的毕业设计。还要感谢我的家人,谢谢他们对我的支持和关心。附录 /**Performshardwaredoublebuffering,ifpossible,orafullupdateifnot.*/intSDL_Flip(SDL_Surface*screen){SDL_VideoDevice*video=current_video;/*Copytheshadowsurfacetothevideosurface*/if(screen==SDL_ShadowSurface){SDL_Rectrect;SDL_Palette*pal=screen->format->palette;SDL_Color*saved_colors=NULL;if(pal&&!(SDL_VideoSurface->flags&SDL_HWPALETTE)){/*simulated8bpp,usecorrectphysicalpalette*/19 山西大学商务学院本科毕业论文(设计)saved_colors=pal->colors;if(video->gammacols){/*gamma-correctedpalette*/pal->colors=video->gammacols;}elseif(video->physpal){/*physicalpalettedifferentfromlogical*/pal->colors=video->physpal->colors;}}rect.x=0;rect.y=0;rect.w=screen->w;rect.h=screen->h;if(SHOULD_DRAWCURSOR(SDL_cursorstate)){SDL_LockCursor();SDL_DrawCursor(SDL_ShadowSurface);SDL_LowerBlit(SDL_ShadowSurface,&rect,SDL_VideoSurface,&rect);SDL_EraseCursor(SDL_ShadowSurface);SDL_UnlockCursor();}else{SDL_LowerBlit(SDL_ShadowSurface,&rect,SDL_VideoSurface,&rect);}if(saved_colors){pal->colors=saved_colors;}/*Fallthroughtovideosurfaceupdate*/screen=SDL_VideoSurface;}if((screen->flags&SDL_DOUBLEBUF)==SDL_DOUBLEBUF){SDL_VideoDevice*this=current_video;return(video->FlipHWSurface(this,SDL_VideoSurface));}else{SDL_UpdateRect(screen,0,0,0,0);}return(0);}19 山西大学商务学院本科毕业论文(设计)参考文献[1]黄柏素译.软件工程实践者的研究方法(第五版).机械工业出版社,1998.110-112.[2]王立福,张世琨,朱冰.软件工程——技术、方法和环境.北京:北京大学出版社,1997.[3]邱玉辉总编.电脑报2000合订本.重庆:西南师范大学出版社,2001:358.[4]张海藩编著.软件工程.人民邮电出版社,2003.5:113.[5]贾赞.Linux下的C编程.北京:人民邮电游版社,2001,205~207.[6]张友生,远程控制编程技术.北京:电子工业出版社,2002,60—63[7]KarimYagbmour,构建嵌入式LINUX系统,O’RinyTaiwan公司,2004,140~143.[8]陈赜,ARM9嵌入式技术及Linux高级实践教程.北京:北京航天航空大学出版社,2005,38--4l.[9]韦锦出,网络视频监控系统的新发展.通信世界,2002,90(5):104~105.[10]沈连丰,嵌入式系统及其开发应用.北京:电予王业趱舨社,2005,59-60.Abstract:pularityofcomputerequipmentandthewideapplicationofIntenet,multichannelvideomonitoringembeddedsystemhasbeenusedtoallaspectsoflife.ThefourwayvideomonitoringsystemwhichisbasedonQt,consistsofdataacquisition,encoding,decoding,displayoffourmodules,andusetheC/Sarchitecture.Thisproject,asaC/Sframeworkclient(Client),istherealizationofthevideodataacquisitionbySDLdecodinganddisplayterminal.BasedonC/Sstructure,itusesQtasthedevelopmentplatform,andsetssocketprogramming,dataconnection,datatransmission,datadisplayinone,.what’smoretheinterfacedesignwhichhasclearfunctionissimpleandgenerous.Keywords:remotemonitoring,LINUXC/SUI19 山西大学商务学院本科毕业论文(设计)学位论文原创性声明本人郑重声明:所呈交的学位论文,是本人在导师的指导下进行的研究工作所取得的成果。尽我所知,除文中已经特别注明引用的内容和致谢的地方外,本论文不包含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式注明并表示感谢。本人完全意识到本声明的法律结果由本人承担。学位论文作者(本人签名):年月日学位论文出版授权书本人及导师完全同意《中国博士学位论文全文数据库出版章程》、《中国优秀硕士学位论文全文数据库出版章程》(以下简称“章程”),愿意将本人的学位论文提交“中国学术期刊(光盘版)电子杂志社”在《中国博士学位论文全文数据库》、《中国优秀硕士学位论文全文数据库》中全文发表和以电子、网络形式公开出版,并同意编入CNKI《中国知识资源总库》,在《中国博硕士学位论文评价数据库》中使用和在互联网上传播,同意按“章程”规定享受相关权益。论文密级:□公开□保密(___年__月至__年__月)(保密的学位论文在解密后应遵守此协议)作者签名:_______导师签名:______________年_____月_____日_______年_____月_____日19 山西大学商务学院本科毕业论文(设计)独创声明本人郑重声明:所呈交的毕业设计(论文),是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议。尽我所知,除文中已经注明引用的内容外,本设计(论文)不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。本声明的法律后果由本人承担。 作者签名:二〇一〇年九月二十日 毕业设计(论文)使用授权声明本人完全了解滨州学院关于收集、保存、使用毕业设计(论文)的规定。本人愿意按照学校要求提交学位论文的印刷本和电子版,同意学校保存学位论文的印刷本和电子版,或采用影印、数字化或其它复制手段保存设计(论文);同意学校在不以营利为目的的前提下,建立目录检索与阅览服务系统,公布设计(论文)的部分或全部内容,允许他人依法合理使用。(保密论文在解密后遵守此规定) 作者签名:二〇一〇年九月二十日19 山西大学商务学院本科毕业论文(设计)致谢时间飞逝,大学的学习生活很快就要过去,在这四年的学习生活中,收获了很多,而这些成绩的取得是和一直关心帮助我的人分不开的。首先非常感谢学校开设这个课题,为本人日后从事计算机方面的工作提供了经验,奠定了基础。本次毕业设计大概持续了半年,现在终于到结尾了。本次毕业设计是对我大学四年学习下来最好的检验。经过这次毕业设计,我的能力有了很大的提高,比如操作能力、分析问题的能力、合作精神、严谨的工作作风等方方面面都有很大的进步。这期间凝聚了很多人的心血,在此我表示由衷的感谢。没有他们的帮助,我将无法顺利完成这次设计。首先,我要特别感谢我的知道郭谦功老师对我的悉心指导,在我的论文书写及设计过程中给了我大量的帮助和指导,为我理清了设计思路和操作方法,并对我所做的课题提出了有效的改进方案。郭谦功老师渊博的知识、严谨的作风和诲人不倦的态度给我留下了深刻的印象。从他身上,我学到了许多能受益终生的东西。再次对周巍老师表示衷心的感谢。其次,我要感谢大学四年中所有的任课老师和辅导员在学习期间对我的严格要求,感谢他们对我学习上和生活上的帮助,使我了解了许多专业知识和为人的道理,能够在今后的生活道路上有继续奋斗的力量。另外,我还要感谢大学四年和我一起走过的同学朋友对我的关心与支持,与他们一起学习、生活,让我在大学期间生活的很充实,给我留下了很多难忘的回忆。最后,我要感谢我的父母对我的关系和理解,如果没有他们在我的学习生涯中的无私奉献和默默支持,我将无法顺利完成今天的学业。四年的大学生活就快走入尾声,我们的校园生活就要划上句号,心中是无尽的难舍与眷恋。从这里走出,对我的人生来说,将是踏上一个新的征程,要把所学的知识应用到实际工作中去。回首四年,取得了些许成绩,生活中有快乐也有艰辛。感谢老师四年来对我孜孜不倦的教诲,对我成长的关心和爱护。学友情深,情同兄妹。四年的风风雨雨,我们一同走过,充满着关爱,给我留下了值得珍藏的最美好的记忆。在我的十几年求学历程里,离不开父母的鼓励和支持,是他们辛勤的劳作,无私的付出,为我创造良好的学习条件,我才能顺利完成完成学业,感激他们一直以来对我的抚养与培育。最后,我要特别感谢我的导师赵达睿老师、和研究生助教熊伟丽老师。是他们在我毕业的最后关头给了我们巨大的帮助与鼓励,给了我很多解决问题的思路,在此表示衷心的感激。老师们认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我收益匪浅。他无论在理论上还是在实践中,都给与我很大的帮助,使我得到不少的提高这对于我以后的工作和学习都有一种巨大的帮助,感谢他耐心的辅导。在论文的撰写过程中老师们给予我很大的帮助,帮助解决了不少的难点,使得论文能够及时完成,这里一并表示真诚的感谢。19

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭