视频监控程序设计说明书_第1页
视频监控程序设计说明书_第2页
视频监控程序设计说明书_第3页
视频监控程序设计说明书_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、视频监控系统程序设计说明书1引言1.1编写目的本文主要说明视频监控系统的详细设计与实现。本文详细介绍了系统中各个模块的设计与实现细节以及关键技术的应用。其中,对每一个模块会有相应的文字说明以及相关设计流程图给出。1.2项目背景本项目是对本实验课程中所介绍的课程的综合应用。本项目主要针对 unix/linux系统编程和基于 c+ 语言的 gui程序设计 -qt 进行针对性训练。旨在加强学生对unix/linux系统编程的理解和应用,提高学生的实践能力、编程能力以及分析问题和解决问题的能力。并且通过对本系统中客户端的设计和实现,让学生体会和熟悉面向对象编程的思想和一般方法。1.3定义本系统 = 视

2、频监控系统本文= 视频监控系统设计说明书2总体设计2.1需求概述本系统是基于 c/s 架构的网络视频监控系统,主要由负责图形采集和传输的server 端和负责监控(显示图像)的client端构成。本系统 server 端是基于 linux 系统的网络服务类软件,主要由数据采集和网络服务两部分构成。数据采集部分利用v4l2 (video for linux ii)对网络摄像头进行控制和访问并且获取由摄像头捕获到的视频数据,然后再由网络服务部分将获取到的视频数据进行封装成http 帧并利用 http 协议发送到客户端。由于本系统 server 端的数据发送是基于http 协议的,所以本系统客户端没

3、有平台限制,只要支持 http1.0以上的平台就可以访问本系统的服务。而且,本系统服务可以直接通过web浏览器访问(对firefox浏览器支持最佳)。为了提高传输效率我们还需要进行客户端软件的开发,由于对客户端没有平台要求,所在windows 、linux 、android 、等平台都可以实现。本文主将以 linux为例用 qt 实现一个简易的客户端软件。2.2 软件结构3程序描述3.1 server:数据采集配置设备并从设备中获取图像数据。根据设备信息利用v4l2 (video for linux ii)通过 ioctl对 usb摄像头进行配置,打开设备抓取功能开始采集并转存数据,采集完毕以

4、后关闭设备功能,最后关闭设备。本模块涉及到大量的对于设备的i/o 操作,主要通过 video for linux ii(v4l2)框架对设备进行设置和控制。其中包括一些特殊的结构体属性的赋值以及一些特殊控制标记的实际意义需要详细查阅v4l2 提供的 api。本节主要以流程图的方式介绍server 端数据采集模块的主要程序逻辑设计。图 3.1.1 server端数据采集流程图1. 打开设备:2. 查询设备信息(或者叫获取设备信息):图 3.1.2 打开设备子图图 3.1.3 获取设备信息子图3. 设置采集方式图 3.1.4 设置采集方式子图4. 申请缓存图 3.1.5 申请缓存子图5. 设置缓存

5、属性对申请到的缓存进行设置,包括设置缓存的访问方式(使用内存映射访问方式),对缓存进行映射,建立缓存队列。ynny1struct v4l2_capability capstruct v4l2_format fmtmemset(&cap, 0, sizeof(cap);memset(&fmt, 0, sizefo(fmt);ioctl(fd, vidioc_querycap, &cap)ioctl(fd, vidioc_g_fmt, &fmt)yfmt.type = v4l2_buf_type_video_capture3struct v4l2_requestbu

6、ffer rbmemset(&rb, 0, sizeof(rb);/本模块用到的宏定义/表示申请缓冲区的数量#define nb_buffer 52struct v4l2_format fmtstruct v4l2_streamparm parmmemset(&parm, 0, sizeof(parm);memset(&fmt, 0, sizefo(fmt);fmt.type = v4l2_buf_type_video_captureparm.type = v4l2_buf_type_video_capture/本模块用到的宏定义#define width 320#de

7、fine heigth 240#define fps 5是否图 3.1.6 设置缓存子图5. 处理数据图 3.1.7 数据处理子图3.2 server:数据处理完成图像压缩,建立web服务供客户端访问。对摄像头采集到的数据进行一次huffman 编码把图片转换成jpeg 或者 jpg 格式(这个步骤也可以在客户端完成,但是浏览器不支持此种实现)。建立一个基于 tcp/ip 的 web服务器,当有客户端连接本服务时利用http 协议发送转换好的数据。3.2.2 技术概要本模块主要涉及到对原始图像数据的压缩以及基于c语言的网络和多线程的编程。关于图像压缩的部分在本项目中不做研究所以只是简单的调用已

8、有接口。对于网络服务功能以及多任务的处理功能的实现都是本项目要涉及到的重要内容,这里需要对基于c语言的 tcp编程和多线程编程比较熟悉,可以参考unix环境高级编程。图 3.2.1 数据处理图 3.2.2 服务端帧封装结构3.3 client:获取数据向服务器发送请求,根据服务器的响应信息接收数据。与服务器建立基于tcp的连接,向服务器发送http 请求,接收服务器返回的响应信息,并根据响应信息按照一定的格式接收数据。3.3.2 技术概要本模块主要涉及到基于tcp的客户端编程,关于各户端编程的方法比较灵活,在语言框架选择方面也比较广泛,像java gui、mfc 、qt等都可以实现。在这里我们

9、一qt为例来实现客户端程序。5struct v4l2_buffer buf memset(&buf, 0, sizeof(buf);ioctl(fd, vidioc_streamon, &buf)buf.type = v4l2_buf_type_video_capturebuf.memory = v4l2_memory_mmapynioctl(fd, vidioc_streamon, &buf)yny4struct v4l2_buffer bufunsigned char * mem_listmem_list = (uchar *)calloc(nb_buffer, s

10、izeof(uchar);int i = 0;buf.index = ibuf.type = v4l2_buf_type_video_capturebuf.memory = v4l2_memory_mmapioctl(fd, vidioc_querybuf, &buf)ioctl(fd, vidioc_qbuf, &buf)nyyn5http?响typelength空行图 3.3.2 tcp网络编程流程图 3.3.3 客户端数据分割流程3.4 client:显示通过信号控制 qt控件刷新图片。我们看到连续的图像是由一张一张的单独的图片不断刷新形成的,所以本模块主要功能是接收上一模块的数据准备好信号后将新的图像数据加载到控件并刷新控件,从而形成连续的图像。3.4.2 技术概要本模块主要涉及到qt的编程和使用,包括对一些控件的控制和线程控制。由于循环显示图像时候会阻塞图形界面,所以用一个单独的线程来完成刷新图像工作。对于qt相关一些知识请详细参考 qt官方提供的 api。页面刷新流程,这里主要到qt中的信号和槽的机制来实现图

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论