通信原理课程设计视频监控系统设计大学论文.docx
- 文档编号:26462821
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:28
- 大小:1.91MB
通信原理课程设计视频监控系统设计大学论文.docx
《通信原理课程设计视频监控系统设计大学论文.docx》由会员分享,可在线阅读,更多相关《通信原理课程设计视频监控系统设计大学论文.docx(28页珍藏版)》请在冰豆网上搜索。
通信原理课程设计视频监控系统设计大学论文
《通信原理》课程设计说明书
视频监控系统设计
学院:
电气与信息工程学院
学生姓名:
指导教师:
职称:
助教
专业:
通信工程
班级:
通信1302班
学号:
完成时间:
2016年12月
湖南工学院《通信原理》课程设计课题任务书
学院:
电气与信息工程学院专业:
通信工程
指导教师
学生姓名
课题名称
视频监控系统设计
内内容及任务
一、设计任务
在GEC210开发板上接入摄像头,实时获取并显示视频流、截图拍照并保存。
二、设计内容
根据控制要求,明确设计任务,拟定设计方案与进度计划,运用所学的理论知识,进行视频监控系统原理设计、程序框架设计、创新设计,提高理论知识、系统调试能力、分析问题与解决问题的能力。
主要内容包括:
1.嵌入式交叉开发环境搭建。
2.Linux操作系统移植。
3.根据需求确定外围模块设计并完成相应驱动的开发。
4.应用程序原理及框架设计。
5.Linux下应用程序编写及移植。
6.系统总体功能调试。
7.编写设计说明书。
三、要求
1.为GEC210开发板接入摄像头并完成V4L2驱动框架移植。
2.编写应用程序打开摄像头获取实时视频流。
3.完成可以保存任意一张图片到本地目录的功能。
4.实现效果如下图所示:
主要参考资料
[1]马忠梅,ARM&Linux嵌入式系统教程(第3版)[M]。
北京:
北京航空航天大学出版社,2014
[2]曹忠明,程姚根。
从实践中学嵌入式Linux操作系统[M]。
北京:
电子工业出版社,2012
[3]宋宝华,Linux设备驱动开发详解(第二版)[M]。
北京:
人民邮电出版社,2010。
[4]韦东山,嵌入式Linux应用开发完全手册[M]。
北京:
人民邮电出版社,2008
[5]陆文周,Qt5开发及实例[M]。
北京:
电子工业出版社,2015
[6]StephenPrata,CPrimerPlus[M]。
北京:
人民邮电出版社,2005
教研室
意见
教研室主任:
年月日
摘要
随着网络通信技术和嵌入式技术的发展,基于嵌入式Web服务器的视频监控系统已成为监控领域的发展趋势。
本设计通过搭建嵌入式环境,编写程序并将程序导入开发板中并实现视频监控的功能。
设计中首先对视频监控系统现阶段的发展及课题的意义进行了概述,其次对GEC210开发板进行了简介并介绍QT平台的搭建步骤。
然后分别介绍了在设计中用到的三个主要技术,最后把程序导入开发板,实现了视频监控的功能。
关键词:
嵌入式;GEC210;QT
目录
1绪论1
1.1课题的研究意义1
1.2课题的国内发展状况1
1.2.1模拟视频监控系统1
1.2.2本地数字视额监控系统1
1.2.3远程网络视频监控系统2
1.3课题的研究内容2
2GEC210的简介及QT平台的搭建3
2.1GEC210的简介3
2.2QT平台的搭建4
3设计的主要技术7
3.1FrameBuffer7
3.2YUYV转换RGB8
3.3video4linux9
4功能实现测试15
结束语17
参考文献18
致谢19
附录A程序代码20
1绪论
1.1课题的研究意义
随着网络通信技术和嵌入式技术的发展,基于嵌入式Web服务器的视频监控系统已成为监控领域的发展趋势,采用B/S架构的嵌入式Web服务器,监控者无需到现场操作,系统成本低廉,设备体积小巧,安装方便,故障维护升级简单,安全可靠,满足了现代消费者的需求。
视频监控系统的产生和发展有两个方面的原因:
一方面,随着人们安全防范观念的加强,人们迫切希望通过监控的方式来预防和减少公共场所的破坏及犯罪活动。
另一方面,视频技术和网络通信技术日益成熟,为它的实现和应用奠定了基础;而计算机技术和多媒体技术的迅速发展,将自动控制和多媒体技术融入到视频监控系统中来,促进了它的普及和应用。
网络通信和微电子技术的快速发展和人民物质生活水平的提高,使得人们的生产行为,生活方式发生了重大的变化,视频监控以其直观,方面和内容丰富等特点日益受到人们的重视。
安防监控从银行到交通路口,从连锁超市到小区范围,都会看到监控产品的存在,大量犯罪案件在安防监控产品的帮助下破获。
人们意识到视频监控对生产生活的安全非常重要,而网络视频监控凭借其先进的技术和贴近用户习惯的使用方式,逐步走进人们的生活当中。
视频监控系统在保护安全,预防犯罪方面起到不可低估的作用,监控市场领域不断扩大。
据权威部门统计,1998年全国图像监控系统的市场总额为650亿元,今年来一直保持1﹪至30﹪的速度快速增长。
随着摄像设备价格逐渐下降,计算机计算能力增强和网络速度的提高,视频监控技术得到了快速的发展。
1.2课题的国内发展状况
1.2.1模拟视频监控系统
采用模拟方式传输,最简单的就是将图像信号直接送入视频电缆进行传输。
每一监控点的视频信号都通过一条电缆线连接到中心控制室的多路切换器上,以手动切换方式选择监控点图像,使之显示在监视器上。
模拟视频监控有以下弊端:
运行及维护成本高;视频图像的质量不能在任意时刻调整;无法联网,只能以点对点的方式监控现场,使得布线工程量极大;检索困难;难以做到无人值守。
1.2.2本地数字视额监控系统
进入20世纪80年代,随着数字化技术的发展,人们从过去的模拟处理方式转向数字处理方式,开始使用计算机处理图像信号。
利用计算机的数据处理能力与显示器的高清晰度,将视频信号通过视频采集卡采集到计算机中,显示在显示器上,大大提高了图像的画质,但是控制与切换仍采用传统的单片机方式,只是计算机串口与之相连,完成控制工作。
尽管它有良好的人机界面,较好的稳定性,但它不能称为真正的数字图像监控系统。
其根本原因在于系统设计的出发点不是基于计算机,而是基于传统模式。
大部分时间里,计算机只是充当一个外部监视器的角色,并且传统单片机系统固有的弊端并没有克服,通信协议的多样化与专用化很难统一,导致现有的计算机资源远远满足不了多种设备的要求。
另外计算机的运行速度较低,而数字视频的数据量又很大,这样就限制了利用一台计算机同时处理更多数字视频信号的能力。
很难组建大型监控系统。
1.2.3远程网络视频监控系统
第三代视频监控系统——远程网络视频监控系统。
远程网络视频监控系统的关键设备是网络视频信号采集终端(也被称为视频服务器),网络视频信号采集终端采用嵌入式实时多任务操作系统。
摄像机送来的视频信号在网络视频信号采集终端数字化后由高效压缩芯片压缩,通过内部总线送到网络接口发送到网络上,网络上用户可以直接用在PC机上用浏览器观看网络视频信号采集终端传送过来的摄像机所拍摄的图像,授权用户还可以通过计算机网络透过网络视频信号采集终端控制摄像机镜头和云台的动作或对系统进行配置操作。
由于把视频压缩和网络功能集中到一个体积很小的设备内,可以直接连入局域网,达到即插即用,省掉多种复杂的电缆,安装方便,仅需设置一个IP地址,用户也无需安装任何硬件设备,仅通过PC机用浏览器即可观看。
数字网络视频监控系统与其它监控系统的比较:
布控区域广阔。
数字网络视频监控系统的网络视频信号采集终端直接连入网络,没有线缆长度和信号衰减的限制,同时网络是没有距离概念的,彻底抛弃了地域的概念,扩展布控区域;系统具有几乎无限的无缝扩展能力。
所有设备都以IP地址进行标识,增加设备只是意味着IP地址的扩充;可组成非常复杂的监控网络。
采用基于网络视频信号采集终端为核心的系统,在组网方式上与以往的监控方式有极大的不同,由于视频信号采集终端输出已完成模拟到数字的转换并压缩,采用统一的协议在网络上传输,支持跨网关、跨路由器的远程视频传输;性能稳定可靠,无需专人管理。
视频信号采集终端实际上基于嵌入式电脑技术,采用嵌入式实时多任务操作系统,又由于视频压缩和网络功能集中到一个体积很小的设备内,直接连入局域网或广域网,即插即看,系统的实时性、可靠性大大提高,也无需专人管理,非常适合无人值守的环境;当需要同时观看多路监控视频时,对网络带宽就会有一定的要求。
1.3课题的研究内容
本文研究的主要内容,通过QT软件,编写程序并导入GEC210嵌入式开发板中去,开发板外接摄像头,从而实现视频实时监控的功能
2GEC210的简介及QT平台的搭建
2.1GEC210的简介
GEC210是一款高性能的CortexA8核心板,它由广州粤嵌股份设计、生产和发行销售。
它采用三星S5PV210作为主处理器,运行主频可高1GHz。
S5PV210内部集成了PowerVRSGX540高性能图形引擎,支持3D图形流畅运行,并可流畅播放1080P大尺寸视频。
GEC210主要采用了2.0mm间距的双排针,引出CPU大部分常用功能引脚,,另外还根据S5PV210芯片的特性,分别引出了标准的miniHDMI接口,如图所示。
GEC210板载512MDDR2内存,可流畅运行Android,Linux和WinCE6等高级操作系统。
它非常适合开发高端物联网终端,广告多媒体终端,智能家居,高端监控系统,游戏机控制板等设备。
粤嵌GEC210+7寸触屏Cortex-A8S5PV210开发板的功能特性
集成USB2.0Hub:
扩展出2个USBHost口
串口:
4路,其中1路已经转换为RS232,并通过DB9座引出(COM0),同时通过4pin的排针将其他3路引出
中断式按键:
8个,分别定义不同的功能
RJ45网口:
网卡采用DM9000AEP,10/100M自适应
音频输入与输出:
采用WM8960专业音频芯片,在板麦克风,内含ClassD功放,并支持HDMI音频和视频同步输出
USBSlave:
1路,符合USB2.0规范
红外接收头:
1个
ADC输入:
其中AIN0连接了在板可掉电阻,用于测试
蜂鸣器:
1路,由PWM0控制
EEPROM:
AT24C08(256Byte),用于I2C测试
LCD接口:
2个LCD接口,均为40Pin0.5mm间距贴片座,
SDIO接口:
用于连接SDWiFi模块等
CMOSCamera:
用于连接CMOS摄像头
RTC时钟:
带备份电池
PCB层数:
2PCB尺寸:
180x130mm,可方便固定各种LCD模块,尤其是7寸LCD模块
供电:
DC-5V
2.2QT平台的搭建
Qt是一个完整的C++应用程序开发框架。
它包含一个类库,和用于跨平台开发及国际化的工具。
QtAPI在所有支持的平台上都是相同的,Qt工具在这些平台上的使用方式也一致,因而Qt应用的开发和部署与平台无关。
Qtopia是一个面向嵌入式Linux的全方位应用程序开发平台,同时也是用于基于Linux的PDA(个人数字助理),智能电话(Smartphone)以及其他移动设备的用户界面。
简单地说,Qtopia实质上是一组关于PDA和智能电话的应用程序结合,如果需要开发这类产品可以在这组程序的基础上迅速构建出PDA或者智能电话。
Qtopia实质上依赖Qt/Embedded。
Qt/Embedded是一个完整的自包含GUI和基于Linux的嵌入式平台开发工具。
首先,使用qt-x11提供的库和开发工具开发出qt应用程序,然后使用qt-embedded关于x86库和工具再次编译我们开发qt应用程序,这是所得到的可执行文件就可以在qvfb上运行了,最后,使用qt-embeddedd的arm库再次编译就可以得到在arm上能运行的可执行程序。
具体步骤:
qt-x11版本可以产生Qt开发工具,如designer等等,最重要的是可以得到qvfb,嵌入式的开发有了qvfb,就可以不需要实际的开发板,也可以开发Qt应程序。
qt-embedded版本就是专门用于嵌入式方面的版本。
tarxjvfqt-x11-opensource-src-4.5.0.tar.bz2
cdqt-x11-opensource-src-4.5.0
./configure
make
makeinstall
历经漫长的编译过程,约一个半小时,默认安装在/usr/local/Trolltech/Qt-4.5.0下。
编译完成后源程序不要删除。
编译及安装qt-embedded-linux-opensource-src-4.5.0,在用户目录下建立一个src目录,用于存放编译源文件qt-embedded-linux-opensource-src-4.5.0.tar.bz2。
将其解压得到qt-embedded-linux-opensource-src-4.5.0,
重命名为qt-embedded-linux-opensource-src-4.5.0-x86.
再次解压qt-embedded-linux-opensource-src-4.5.0.tar.bz2,并重命令为qt-embedded-linux-opensource-src-4.5.0-arm。
前者是适合x架构的,后者适合arm架构的,如果有开发板的话,可以只编译qt-embedded版本成arm架构的就可以了,但是很多时候用qvfb的话,开发会方便很多,所以多编译一个x86架构的也不错。
mkdir~/src
mvqt-embedded-linux-opensource-src-4.5.0.tar.bz2~/src
tarxjvfqt-embedded-linux-opensource-src-4.5.0.tar.bz2
mvqt-embedded-linux-opensource-src-4.5.0
qt-embedded-linux-opensource-src-4.5.0-x86
tarxjvfqt-embedded-linux-opensource-src-4.5.0.tar.bz2
mvqt-embedded-linux-opensource-src-4.5.0
qt-embedded-linux-opensource-src-4.5.0-arm
cdqt-embedded-linux-opensource-src-4.5.0-x86
./configure-prefix/usr/local/Trolltech/QtEmbedded-4.5.0-x86-embeddedx86-qvfb
make
makeinstall
-------OK!
qt-embedded-x86被安装在/usr/local/Trolltech/QtEmbedded-4.5.0-x86下.
cdqt-embedded-linux-opensource-src-4.5.0-arm
./configure-prefix/usr/local/Trolltech/QtEmbedded-4.5.0-arm-embeddedarm
make
makeinstall
-------OK!
qt-embedded-arm被安装在/usr/local/Trolltech/QtEmbedded-4.5.0-arm下。
至此我们已经安装好了qt-x11版,即在PC机上运行的QT,qt-embedded-x86版(x86体系的嵌入式板子上运行的QT)和qt-embedded-arm(arm板子上运行的QT)。
下一步:
设置环境变量。
(1)qt-x11:
visetenv.sh
添加如下内容:
PATH=/usr/local/Trolltech/Qt-4.5.0/bin:
$PATH
LD_LIBRARY_PATH=/usr/local/Trolltech/Qt-4.5.0/lib:
$LD_LIBRARY_PATH
保存退出.移到/usr/local/Trolltech/Qt-4.5.0中。
(2)qt-embedded-x86:
visetenv.sh
添加如下内容:
QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.0-x86
PATH=/usr/local/Trolltech/QtEmbedded-4.5.0-x86/bin:
$PATH
LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.0-x86/lib:
$LD_LIB
RARY_PATH
保存退出。
移到/usr/local/Trolltech/QtEmbedded-4.5.0-x86中。
(3)qt-embedded-arm:
visetenv.sh
添加如下内容:
QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.0-arm
PATH=/usr/local/Trolltech/QtEmbedded-4.5.0-arm/bin:
$PATH
LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.0-arm/lib:
$LD_LIB
RARY_PATH
保存退出.移到/usr/local/Trolltech/QtEmbedded-4.5.0-arm中。
我们在运行的时候分别运行对应的脚本即可,比如我们要用qt-x11:
cd/usr/local/Trolltech/Qt-4.5.0
sourcesetenv.sh
然后就可以用qmakedesigner等工具了。
5.做到这一步还有qvfb没有编译,到qt-x11-opensource-src-4.5.0中重新编译qvfb即可。
cdqt-x11-opensource-src-4.5.0cd/tools/qvfb
make--会在qt-x11-opensource-src-4.5.0/bin下生成qvfb,我们将它copy至/usr/local/Trolltech/QtEmbedded-4.5.0-x86/bin下
cp../..bin/qvfb/usr/local/Trolltech/QtEmbedded-4.5.0-x86/bin6.做一个测试cd/usr/local/Trolltech/QtEmbedded-4.5.0-x86
3设计的主要技术
3.1FrameBuffer
FrameBuffer是出现在2.2.xx内核当中的一种驱动程序接口。
Linux是工作在保护模式下,所以用户态进程是无法象DOS那样使用显卡BIOS里提供的中断调用来实现直接写屏,Linux抽象出FrameBuffer这个设备来供用户态进程实现直接写屏。
Framebuffer机制模仿显卡的功能,将显卡硬件结构抽象掉,可以通过Framebuffer的读写直接对显存进行操作。
用户可以将Framebuffer看成是显示内存的一个映像,将其映射到进程地址空间之后,就可以直接进行读写操作,而写操作可以立即反应在屏幕上。
这种操作是抽象的,统一的。
用户不必关心物理显存的位置、换页机制等等具体细节。
这些都是由Framebuffer设备驱动来完成的。
但Framebuffer本身不具备任何运算数据的能力,就只好比是一个暂时存放水的水池.CPU将运算后的结果放到这个水池,水池再将结果流到显示器.中间不会对数据做处理.应用程序也可以直接读写这个水池的内容.在这种机制下,尽管Framebuffer需要真正的显卡驱动的支持,但所有显示任务都有CPU完成,因此CPU负担很重.
framebuffer的设备文件一般是/dev/fb0、/dev/fb1等等。
可以用命令:
#ddif=/dev/zeroof=/dev/fb清空屏幕.
如果显示模式是1024x768-8位色,用命令:
$ddif=/dev/zeroof=/dev/fb0bs=1024count=768清空屏幕;
用命令:
#ddif=/dev/fbof=fbfile可以将fb中的内容保存下来;
可以重新写回屏幕:
#ddif=fbfileof=/dev/fb;
在使用Framebuffer时,Linux是将显卡置于图形模式下的.
在应用程序中,一般通过将FrameBuffer设备映射到进程地址空间的方式使用,比如下面的程序就打开/dev/fb0设备,并通过mmap系统调用进行地址映射,随后用memset将屏幕清空(这里假设显示模式是1024x768-8位色模式,线性内存模式):
intfb;
unsignedchar*fb_mem;
fb=open("/dev/fb0",O_RDWR);
fb_mem=mmap(NULL,1024*768,PROT_READ|PROT_WRITE,MAP_SHARED,fb,0);
memset(fb_mem,0,1024*76;
FrameBuffer设备还提供了若干ioctl命令,通过这些命令,可以获得显示设备的一些固定信息(比如显示内存大小)、与显示模式相关的可变信息(比如分辨率、象素结构、每扫描线的字节宽度),以及伪彩色模式下的调色板信息等等。
通过FrameBuffer设备,还可以获得当前内核所支持的加速显示卡的类型(通过固定信息得到),这种类型通常是和特定显示芯片相关的。
比如目前最新的内核(2.4.9)中,就包含有对S3、Matrox、nVidia、3Dfx等等流行显示芯片的加速支持。
在获得了加速芯片类型之后,应用程序就可以将PCI设备的内存I/O(memio)映射到进程的地址空间。
这些memio
一般是用来控制显示卡的寄存器,通过对这些寄存器的操作,应用程序就可以控制特定显卡的加速功能。
PCI设备可以将自己的控制寄存器映射到物理内存空间,而后,对这些控制寄存器的访问,给变成了对物理内存的访问。
因此,这些寄存器又被称为"memio"。
一旦被映射到物理内存,Linux的普通进程就可以通过mmap将这些内存I/O映射到进程地址空间,这样就可以直接访问这些寄存器了。
当然,因为不同的显示芯片具有不同的加速能力,对memio的使用和定义也各自不同,这时,就需要针对加速芯片的不同类型来编写实现不同的加速功能。
比如大多数芯片都提供了对矩形填充的硬件加速支持,但不同的芯片实现方式不同,这时,就需要针对不同的芯片类型编写不同的用来完成填充矩形的函数。
FrameBuffer只是一个提供显示内存和显示芯片寄存器从物理内存映射到进程地址空间中的设备。
所以,对于应用程序而言,如果希望在FrameBuffer之上进行图形编程,还需要自己动手完成其他许多工作。
3.2YUYV转换RGB
YUYV格式到RGB格式的转换:
为什么YUYV格式要转到RGB格式,视频的显示调用的多数API都是基于RGB格式,所以需要进行格式的转换。
YUYV格式如下:
Y0U0Y1V0Y2U1Y3V1..........。
说明:
一个Y代表一个像素,而一个Y和UV组合起来构成一个像素,所以第0个像素Y0和第一个像素Y1都是共用第0个像素的U0和V0。
而每个分量Y,U,V都是占用一个字节的存储空间。
所以Y0U0Y1V0相当于两个像素,占用了4个字节的存储空间,平均
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通信 原理 课程设计 视频 监控 系统 设计 大学 论文