- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Qt的视频监控设计
嵌入式系统
081200B301a
基于Qt的视频监控设计
一、应用需求分析
近年来,智能安防工作越来越受到重视,而视频监控作为安防的一种重要手段,其实现技术也迅速发展起来,简单高效的视频监控系统的需求进一步扩大。本系统设计实现一个基于mini2440的视频监控系统,包括摄像头视频采集、视频编码储存、基于Qt友好的操作界面等。其工作流程如图1.1所示:
图1.1 视频监控系统工作图
本监控系统实现的功能有一下几个方面:
摄像头视频的实时采集及显示、视频播放暂停与恢复
友好简单的操作界面
基于H264或MPEG的视频编码储存
基于现实安防的需要,本监控系统需要实现以下几个技术指标:
实时视频的采集与显示,至少需要达到每秒15帧
快速的视频编码过程
快速的系统响应,友好的操作界面
很低的编码出错率,系统良好的鲁棒性
二、应用系统总体结构设计描述
2.1硬件平台介绍
核心板Mini2440: Mini2440 是一款真正低价实用的ARM9 开发板,是目前国内性价比最高的一款学习板;它采用Samsung S3C2440 为微处理器,并采用专业稳定的CPU 内核电源芯片和复位芯片来保证系统运行时的稳定性。
图 2.1 mini2440实物图
摄像头:采用罗技USB摄像头
2.2 软件开发环境
跨平台Qt开源库: Qt是一个跨平台的C++图形用户界面应用程序框架,支持windows,Linux,MAC OS。利用Qt 的开发环境 Qt Creator可方便进行Linux下的UI应用程序开发。
FFmpeg: ffmpeg 是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件)。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,这里我们采用H264编码。
SDL:SDL(Simple DirectMedia Layer)是一个自由的跨平台的多媒体开发包,适用于 游戏、游戏SDK、演示软件、模拟器、MPEG播放器和其他应用软件。SDL内置了调用OpenGL的函数。通过使用SDL_image、SDL_ttf、SDL_mixer、SDL_net等外部扩展库,可以轻松实现JPG、PNG、TIFF图像的加载使用,TrueType字体的使用,MP3文件的使用、网络相关的使用等。
2.3 监控系统的框架图
图 2.2 监控系统框架图
三、系统实现
3.1 V4L2接口采集摄像头数据
V4L2 较V4L有较大的改动,并已成为2.6 的标准接口,函盖video/dvb/FM... ,多数驱动都在向V4l2 迁移。V4L2 采用流水线的方式,操作更简单直观,基本遵循打开视频设备、设置格式、处理数据、关闭设备,更多的具体操作通过ioctl 函数来实现。本次设计采用V4L2接口获取摄像头数据,获取的分辨力为320*240。其主要实现步骤如下:
(1)打开文件:调用Open()函数打开设备文件,同时设置相应的设备属性,并返回设备文件的句柄。
(2)获取设备属性:调用ioctl()函数获取摄像头设备文件的相关参数,包括摄像头的名称、分辨力等相关属性
(3)设置格式及分辨力:调用ioctl()函数设置视频格式(常见的有RGB、YUV422及MJPEG等)及摄像头的拍摄分辨力(包括宽、高等)
(4)申请缓存:设置申请缓存的类型及申请缓存的个数等
(5)缓存出对列:对申请成功的缓存进行队列操作,获取缓存的长度信息及并使用mmap()函数将内存地址映射到用户分配的地址空间中。
(6)缓存入队列:对每个申请的缓存进行入队操作,并使用ioctl()函数开始进行视频获取开始操作
(7)获取数据:循环等待摄像头数据,但摄像头数据可用时,进行出队列操作。此时其index所对应的mmap()映射的内存地址中就包含了摄像头数据,并调用SDL接口进行显示(SDL内容见2.3章节)。跳到7,继续获取摄像头数据。
(8)关闭摄像头: 调用close()函数关闭摄像头设备文件。
本次设计采用摄像头的采集分辨力为320*240,数据格式为YUV422格式,摄像头数据获取的流程图如3-1所示:
3.2 SDL接口显示视频数据
SDL(Simple DirectMedia Layer)是一个自由的跨平台的多媒体开发包,适用于 游 戏、游戏SDK、演示软件、模拟器、MPEG播放器和其他应用软件。SDL内置了调用OpenGL的函数。通过使用SDL_image、SDL_ttf、SDL_mixer、SDL_net等外部扩展库,可以轻松实现JPG、PNG、TIFF图像的加载使用,TrueType字体的使用,MP3文件的使用、网络相关
文档评论(0)