版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 . . . 科技学院基于WinCE嵌入式系统开发课程设计报告学 院:_电气与信息工程学院 _专业班级: 计科11-01 学生: 陆万佳 学 号: 2008440165 设计地点(单位)_ 逸夫科技大楼 I524 _ _设计题目:_ 摄像头采集和传输视频图像文件 完成日期: 2014年 1 月 10日指导教师评语: _ _ _ _成绩(五级记分制):_ _ 指导教师(签字):_ _ 18 / 23摘 要嵌入式视频广泛应用于各行各业,而且还在深度地向前发展和深刻地影响着人们的生活。比如与人们息息相关的智能手机,都配带有视频处理的能力,让人们的生活有了很好的扩充。嵌入式视频在工业应用上的重要领域之
2、中,网络视频监控可以算得上是佼佼者。甚至在人类探测卫星中,通过高清晰度的摄像机才可以随时的掌握人类卫星的运行情况。本课程设计就实现了一个具有摄像头采集和传输视频文件功能的应用。系统要求的硬件平台是天嵌TQ2440,嵌入式操作系统是WinCE。其中软件实现中的图像处理部分使用到了开源产品OpenCV,可以对采集到的图像信息进行实时处理和网络传输。所使用的上位机和下位机软件都是使用VS2005进行开发,实现上位机和下位机都可以将采集到的图像发送给对方。关键字:摄像头采集 视频传输 WinCE OpenCV设计题目:摄像头采集和传输视频图像文件学生课程名称基于winCE嵌入式系统开发专业班级计科11
3、-01地 点I524起止时间2013.12.302014.01.09设计容与要求USB接口的ZC301P摄像头是当前普遍的视频设备,利用其驱动程序可以在Windows CE5.0中实现图像采集功能,对视频图像进行点操作可以加强嵌入式WinCE开发和图像处理能力,是嵌入式视频开发的基础,有着较广泛的应用前景。本次应用程序开发设计基于ZLG Magic2410或TQ2440硬件平台,在Windows CE5.0中进行USB接口摄像头的开发应用。设计要求为:(1) 开发平台能够使用USB摄像头进行视频图像的采集。(2) 能够对采集到的图像进行简单的点操作,如彩色图像变为灰度图像,灰度图像拉伸变换、灰
4、度直方图归一化等。(3) 通过网络上传视频图像文件,实现上位机PC读取显示摄像头。设计参数(1)系统分析、设计正确。(2)下载软件到硬件平台后正常启动和显示。(3)界面简洁、美观。(4) 报告格式规。进度要求18周周一9:0012:00:明确课程设计任务,学习相关基础知识18周周二9:0012:00:查阅相关资料,熟悉任务要求,进行需求分析18周周三9:0012:00:熟悉各知识点,画出相关任务流程图18周周四14:0017:00:根据题目要求,进行设计和实现18周周五14:0017:00:根据任务情况,实现任务流程19周周一9:0012:00:根据任务情况,实现任务流程19周周二9:0012
5、:00:根据任务情况,实现任务流程,系统测试19周周三9:0012:00:编写设计报告19周周四14:0017:00:答辩19周周五14:0017:00:答辩参考资料1. 任兵,等,EVC高级编程与其应用开发。,水利水电,2005。 2. 冬泉,等,Windows CE实用开发技术M,电子工业,2008。其它说明.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。.若填写容较多可另纸附后。3.一题多名学生共用的,在设计容、参数、要求等方面应有所区别。教研室主任: 易军 指导教师: 奎 骊骁 2013年 12 月22日目录1 需求分析11.1 下位机摄像头采集
6、11.2 上位机摄像头采集11.3 视频邀请功能11.4 视频共享功能21.5 图像处理22 总体设计32.1 主体设计32.2收发视频的流程设计33 详细设计43.1主界面设计43.2下位机摄像头采集43.3 图像处理63.4 网络视频传输74 测试94.1 主窗口94.2菜单功能演示94.3 打开摄像头104.4 视频邀请114.5 视频共享124.6 图像处理135 总结156 参考文献161 需求分析1.1 下位机摄像头采集 下位机操作系统是WinCE5.0,该系统已被证明是一个比较成熟的操作系统,相关的产品资源和文档都非常全面。下位机采集到的图像可以实时的显示到界面上以方便查看采集的
7、效果,由于使用到的硬件开发资源比较有限,没有可以使用的存储器来存储采集到的图像数据,因此只能够将之采集到存中,用完一帧的图像后要释放相关的存资源,以免造成存不足。通过下位机软件来控制摄像头的使用,这要求对底层软件的设计有一定的了解。相关的硬件驱动由厂家提供,由我们来完成应用软件部分的设计。软件开发平台使用Visual Studio 2005,它强大的功能可以帮助我们更加高效的完成设计工作。1.2 上位机摄像头采集上位机使用Windows XP作为系统平台,该系统是非常经典的和实用的PC操作系统。上位机的硬件资源比较充足,可选择的开发途径也比较多,另外在PC平台上有很成熟的通用摄像头控制软件。因
8、此重点放在下位机软件的开发。同样上位机所 采集到的图像数据可以实时的显示到界面上。由于本系统所要求的PC端控制摄像头的要求比较少,因此独立开发完成一款简易的摄像头控制软件,实现了可实时显示所采集的图像数据和将图像数据发送给下位机,另外也由它由接受下位机上传的图像,总的来说,上位机的软件设计比较简单,两个功能:一是接受显示;二是发送显示。1.3 视频邀请功能下位机可以向上位机发送视频邀请,上位机接受后将自身摄像头所采集到的图像数据发送给下位机来显示,这种方式实质就是一种远程监控。使用到TCP协议的网络通讯,TCP协议具有数据有序到达,重发丢失分组、舍弃重复分组,是一种可靠的面向连接的网络通讯协议
9、。1.4 视频共享功能下位机将自身采集到的图像数据发送给上位机来显示,加上了网络功能,这样就实现了一种远程监控的功能。下位机以一定的帧率采集图像数据,将以一定的速率发送出去。由于下位机资源在限,因此仅仅实现了下位机作为一个客户端的角色,它将所收集的图像数据发送给远程的服务器。1.5 图像处理功能下位机将采集到的图像数据加载到存中后,可以对存中的图像数据进行简单的点操作并将操作后的结果显示到界面。图像处理中常用的点操作有灰度化处理、轮廓图、反色、均衡、拉伸、直方图化处理等。这一部分使用到开源的图形图像处理函数库OpenCV,它为图像处理提供了强大的处理操作。OpenCV具有平台可移植性,可将它关
10、键的系统无关的类库部分移植到嵌入式系统平台上。本程序所使用的OpenCV就是可移植到WinCE5.0平台上运行的关键类库(cvd.lib和cvcored.lib)。2 总体设计2.1 主体设计主窗口摄像头管理图像处理打开摄像头关闭摄像头视频邀请视频共享灰度化轮廓图反色均衡拉伸直方图图2.1 主体设计2.2收发视频的流程设计TCP服务器端(上位机)TCP客户端(下位机)创建套接字连接服务器发送数据或接收数据发送数据完成3次握手创建套接字绑定与监听等待连接接收数据或发送数据完成图2.2 收发视频流程图3 详细设计3.1主界面设计下位机的主窗口类是Ctest1Dlg,它继承自对话框基类。在OnIni
11、tDialog函数完成主界面控件、成员变量、套接字等的初始化等。主界面有一个菜单,它由InitMenu()函数进行初始化,程序所有的功能都可以在菜单栏中找到。采用菜单是出于程序功能选项较多时,控件放置会比较凌乱。而通过菜单,既减少界面空间的占用大小,又可以对功能选项进行分组,方便用户进行功能选项的查找与操作。特别是在嵌入式系统的GUI设计中,显示屏比较小时使用菜单的好处就突显出来。3.2下位机摄像头采集3.2.1 摄像头采集的原理与实现下位机的摄像头采集使用到类库AVILIB.lib、zc030xlib1.lib和zc030xlib.lib,将它们和所需的头文件加入开发环境就可以给其他的函数提
12、供调用。摄像头的采集是通过调用函数capGrabFrame 来实现的,它在Ctest1Dlg类的定时器函数中被调用,以每一间隔抓取一帧数据到lpFrameBuffer指向的存区当中。这部分的关键代码如下:/间隔从摄像头抓取一帧到存,转换为IplImage类型数据并显示到对话框上void Ctest1Dlg:OnTimer(UINT_PTR nIDEvent)memset(lpFrameBuffer, 0, dwSize);if (capGrabFrame(index, lpFrameBuffer, dwSize) > 0)if(isCamOpen)BmpTOIpl(video_width
13、,video_height,(BYTE*)lpFrameBuffer);DisplayImageToDlg();/将IplImage类型的数据显示到对话框CDialog:OnTimer(nIDEvent);/将摄像头抓取的一帧数据转换为IplImagevoid Ctest1Dlg:BmpTOIpl(int width,int height,BYTE* lpFrameBuffer)image = cvCreateImageHeader(cvSize(video_width,video_height),IPL_DEPTH_8U,3);cvSetData(image,lpFrameBuffer,vi
14、deo_width*3);cvFlip(image, image, 0);/图像倒置另外其它的几个关键函数如下:(1) 设置摄像头的视频格式。其函数原型如下:int capSetVideoFormat(int index,int format,int sizeMode);其中,第1个参数index是摄像头的设备编号,第二个参数format用于设置视频的格式,有VIDEO_PALETTE_RGB565和VIDEO_PALETTE_JPEG格式等。第三个参数sizeMode指定大小模式,有VIDEO_SIZE_VGA和VIDEO_SIZE_SIF模式等。返回操作是否成功的标志。(2)启动摄像头。其
15、函数原型如下:int capStartCamera(int index);参数是摄像头的设备编号,只有一个摄像头时,只取0即可获得该摄像头。如果返回0,则表示操作成功启动摄像头,否则就是失败的操作。(3)从摄像头获取一帧。其函数原型如下:int capGrabFrame(int index,unsigned char *pFrameBuf,unsigned int bufferLen);其中,index是其设备号,pFrameBuf指向保存获取帧的缓冲区,bufferLen是其长度。(4)终止摄像头的抓取。其函数原型如下:int capStopCamera(int index);其中,参数in
16、dex是指定摄像头的设备号,成功操作时返回0。3.2.2摄像头相关的按钮响应函数与摄像头有关的按钮响应函数如下表所示:函数名返回类型功能描述OnOpenCameravoid打开摄像头OnCloseCameravoid关闭摄像头OnRemoteCameravoid视频邀请OnCloseRemoteCameravoid断开视频邀请3.3 图像处理从摄像头采集数据存放到IplImage类型的存区后,就可以调用OpenCV相关的函数对数据进行点操作处理。类型IplImage 是OpenCV中最为重要的结构体,几乎所有的操作都是对该结构体进行操作处理。涉与到OpenCV的最常用的一个函数如下:(1)图像
17、载入函数函数cvLoadImage载入指定图像文件,并返回指向该文件的IplImage指针。函数支持bmp、jpg、 png、 tiff等格式的图像。其函数原型如下:IplImage* cvLoadImage( const char* filename, int iscolor);其中,filename 是待载入图像的名称,包括图像的扩展名;iscolor是一个辅助参数项,可选正数、零和负数三种值,正数表示作为三通道图像载入,零表示该图像作为单通道图像,负数表示载入图像的通道数由图像文件自身决定。(2)窗口定义函数函数cvNamedWindow定义一个窗口,用于显示图像。其函数原型如下:int
18、 cvNamedWindow( const char* name, unsigned long flags );其中,name是窗口名,flags是窗口属性指标值,可以选择CV_WINDOW_AUTOSIZE和0两种值。CV_WINDOW_AUTOSIZE表示窗口尺寸与图像原始尺寸一样,0表示以固定的窗口尺寸显示图像。(3)图像显示函数函数cvShowImage是在指定的窗口中显示图像,其函数原型如下:void cvShowImage( const char* name, const CvArr* image );其中,name是窗口名称,image是图像类型指针,一般是IplImage指针。
19、(4)图像保存函数函数cvSaveImage以指定的文件名保存IplImage类型的指针变量,其函数原型如下:int cvSaveImage( const char* filename, const CvArr* image );其中,filename是图像保存路径和名称,image是IplImage指针变量。(5)图像销毁函数函数cvReleaseImage销毁已定义的IplImage指针变量,释放占用存空间。其函数原型如下:void cvReleaseImage( IplImage* image );其中,image为已定义的IplImage指针。另外本程序中涉与到的其它几个关键函数的功能
20、描述如下表所示:函数名返回值功能描述LoadImageToMemvoid将图片导入存ImageToGrayvoid转换为灰度图ImageCannyvoid轮廓图ImageReversevoid图片反色ImageEqualizeHistvoid图像均衡OnLoadPicturevoid导入图片3.4 网络视频传输3.4.1实现原理所谓视频传输就是将图片一传到屏幕,由于传输速度很快,所以可以让大家看到连续动态的画面,就像放电影一样。一般当画面的传输数量达到每秒24帧时,画面就有了连续性。在进行这种图片的传输时,必须将图片进行压缩,以达到预期的要求。本程序中,以一定的速率从摄像头抓取一帧保存到存中,
21、在发送时直接使用SOCKET类的函数send直接发送出去,到达目的后,按照该数据类型的格式要求进行接收,整个接收与发送过程中没有涉与到文件在磁盘上的操作,全部都是在存里实现,因此提高了速率。3.4.2 实现部分的关键代码(1) 发送数据在发送部分的代码中,由IplImage类型的数据结构取得指向排列的图像数据imageData和图像数据大小imageSize,根据这两部分就可以使用套接字直接将该帧的数据发送出去。IplImage* pFrame;SOCKET sockConn = accept(sockSrv, (SOCKADDR*)&addrClient, &len);whi
22、le (sDlg->isSend)pFrame = cvQueryFrame( pCapture );send(sockConn, (const char *)pFrame->imageData, pFrame->imageSize , 0);.(2) 接收数据在接收数据帧的代码部分中,首先由cvCreateImage分配一幅图像,将接收到的数据帧保存到该分配空间中即可。SOCKET sockConn = accept(sockSrv, (SOCKADDR*)&addrClient, &len);IplImage * pRecvImg = cvCreateIm
23、age( cvSize(320,240), 8, 3 );uchar * pRecvData = (uchar *)pRecvImg->imageData;int imgsize = pRecvImg->imageSize;while (1)recv(sockConn, (char *)pRecvData, imgsize , 0);3.5 上位机摄像头采集在上位机摄像头采集中,使用到了开源类库OpenCV,使用它就可以很方便的从摄像头采集到数据,不用我们去开发底层的驱动程序。以下例出上位机摄像头采集所使用到的重要关键函数声明:(1)初始化摄像头CvCapture* cvCreat
24、eCameraCapture( int index );其中参数index是摄像头的设备编号。(2)从摄像头抓取并返回一帧IplImage* cvQueryFrame( CvCapture* capture );其中,参数capture是cvCreateCameraCapture()函数的返回值,抓取成功后返回一帧图像,它的数据类型是OpenCV的IplImage,这样就可以对图像进行操作处理或者经过转换为存位图文件后显示到对话框上面。(3) 释放存void cvReleaseCapture( CvCapture* capture );若从capture中使用cvQueryFrame获取图像指针,在releaseCapture的时候同时函数释放图像指针,用户不用再自己释放。4 测试4.1 主窗口图4.1 主窗口4.2菜单功能演示图4.2-1主窗口图4.2-2主窗口4.3 打开摄像头图4.3打开摄
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026秋季国家管网集团华中公司高校毕业生招聘笔试参考题库(浓缩500题)及完整答案详解一套
- 2026中铁工程设计咨询集团有限公司高校毕业生招聘考试参考试题(浓缩500题)及完整答案详解1套
- 布线 施工合同
- 2025届国家管网集团高校毕业生招聘笔试历年参考题库附带答案详解(浓缩500题)附答案详解(培优b卷)
- 芗城租房合同
- 2026国网贵州省电力公司高校毕业生提前批招聘(约450人)笔试备考题库浓缩500题含答案详解(模拟题)
- 2026秋季国家管网集团西南管道公司高校毕业生招聘考试备考试题(浓缩500题)附参考答案详解(巩固)
- 桁架搭建合同
- 2025至2030中国智能变电站行业深度分析及发展前景与发展战略报告
- 新冠疫情解除租赁合同
- 高新技术企业申报范本
- 高中高一英语第一次月考试卷分析
- 开荒期间应知及注意事项课件
- NY 5099-2002无公害食品食用菌栽培基质安全技术要求
- GB/T 6462-2005金属和氧化物覆盖层厚度测量显微镜法
- Unit 3 Lesson 3 Memories of Christmas 课件-高一英语北师大版(2019)必修第一册
- GB/T 11352-2009一般工程用铸造碳钢件
- 学生手册正文
- 小学五年级信息技术下册教案-全册
- 高效协同课件
- 【教材解读】语篇研读-Comfort food
评论
0/150
提交评论