1、 课 程 设 计 任 务 书 课程名称 嵌入式系统 课 题 Qt 视频采集程序 专业班级 计算机 学生姓名 学 号 指导老师 任务书下达日期 2012 年 9 月 3 日 任务完成日期 2012 年 9 月 8 日 嵌入式系统课程设计任务书 设计课题 7:Qt 视频采集程序 1 1、 问题描述:问题描述: 智能家居系统中,智能家居系统中,ARMARM 平台平台可可通过通过 USBUSB 摄像头进行视频数据的采集,以满足摄像头进行视频数据的采集,以满足 家庭安防报警的要求。家庭安防报警的要求。友好界面的友好界面的视频采集程序可对摄像头信息进行实时采集,视频采集程序可对摄像头信息进行实时采集, 并
2、并向用户手机发送预警信息。向用户手机发送预警信息。本课题要求在本课题要求在 QtQt 程序中嵌入程序中嵌入 OpencvOpencv 计算机视觉计算机视觉 类库类库。 2 2、 功能设计要求:功能设计要求: 1 1)本系统)本系统运用运用 Qt creatorQt creator 集成开发环境进行友好的集成开发环境进行友好的 GUIGUI 设计,并通过信设计,并通过信 号和槽接口嵌入底层号和槽接口嵌入底层 opencvopencv 视频采集视频采集程序程序。 2 2)opencvopencv 类库编译类库编译: O Opencvpencv 源码包的解压和配置源码包的解压和配置 O Opencv
3、pencv 的编的编译和安装译和安装 3 3)GUIGUI 界面界面模块模块: Qt creatorQt creator 设计良好的人机界面设计良好的人机界面 界面实现界面实现摄像头的打开摄像头的打开、视频帧的抓取、保存视频帧的抓取、保存功能功能 3 3、要求:、要求: 1 1)安装安装 Qt creatorQt creator; 2 2)对)对 QtQt 源码源码和和视频采集视频采集程序程序的核心部分加必要注释和说明的核心部分加必要注释和说明; 3 3)程序能运行程序能运行; 目录目录 一、 系统介绍 . 1 二、总体设计 1 2.1 程序模块. 1 2.2.函数分析. 1 2.3.总体结构
4、. 1 三主要模块的实现 . 2 四程序调试 2 五总结与体会 3 六源程序清单 4 1 一、一、 系统介绍系统介绍 本系统运用 Qt creator 集成开发环境进行友好的 GUI 设计,并通过信号和 槽接口嵌入底层 opencv 视频采集程序。通过信号(signal)和卡槽(slot)对 USB 摄像头进行识别和操作来采集视频数据。 二二、总体设计总体设计 2.1 程序模块程序模块 程序只有两个模块,就是采集界面和摄像头操作。 2.2.函数分析函数分析 程序包括几个功能函数:1、摄像头打开函数openCamera(),识别并打开摄 像头。2、摄像头信息读取函数readFrame(),从摄像
5、头中抓取帧,转换为QImage 格式,并显示到界面上。3、摄像头关闭函数closeCamera(),关闭摄像头,释放 资源。4、视频数据转换函数bgr24_bgr32(),申请缓冲空间,将视频数据转换为 合适的像素大小的适用界面的格式。 2.3.总体结构总体结构 主界面 openCamera() closeCamera() readFrame() bgr24_bgr32() 2 三三主要模块的实现主要模块的实现 在 open 按钮上建立 signal 和 slot 来识别 USB 摄像头,如果检测到摄像头 将开启摄像头,并读取其信息,将视频数据进行格式转换,然后将转换成 QImage 格式的视
6、频数据显示到 label 控件上,从而显示出视频内容。在 closeCam 按钮 上建立信号关闭摄像头并用 opencv 中的cvReleaseCapture 函数释放内存。 四四程序调试程序调试 3 五总结与体会五总结与体会 对于Qt来说我已经不陌生啦,经过上半年一学期的Qt界面编程, 我已经可以独立完成一些不大复杂的程序。 对于这次课程设计其实程 序十分简单,只是要嵌入opencv这个陌生的程序包,所以比较复杂。 之前都是运用自带的程序包, 在Qt中嵌入其它程序包对我来说还是第 一次,新手上路就会遇到问题,我在网上查了安装方法,但是有部分 是错误的,导致后面编译能通过,却运行不了。经过一步步的排查才 发现是安装错啦,重新安装后才解决了问题。还有一个问题,就是视 频转换这部分,参考了资料才知道要将视频数据转换成