基于OPENCV的视频播放器设计Word格式.docx

上传人:b****5 文档编号:16434830 上传时间:2022-11-23 格式:DOCX 页数:53 大小:356.49KB
下载 相关 举报
基于OPENCV的视频播放器设计Word格式.docx_第1页
第1页 / 共53页
基于OPENCV的视频播放器设计Word格式.docx_第2页
第2页 / 共53页
基于OPENCV的视频播放器设计Word格式.docx_第3页
第3页 / 共53页
基于OPENCV的视频播放器设计Word格式.docx_第4页
第4页 / 共53页
基于OPENCV的视频播放器设计Word格式.docx_第5页
第5页 / 共53页
点击查看更多>>
下载资源
资源描述

基于OPENCV的视频播放器设计Word格式.docx

《基于OPENCV的视频播放器设计Word格式.docx》由会员分享,可在线阅读,更多相关《基于OPENCV的视频播放器设计Word格式.docx(53页珍藏版)》请在冰豆网上搜索。

基于OPENCV的视频播放器设计Word格式.docx

C++;

VideoPlayer;

AVIformat

1绪论

1.1概述

C++语言是一种优秀的面向对象程序设计语言,它在C语言的基础上发展而来,但它比C语言更容易为人们学习和掌握。

C++以其独特的语言机制在计算机科学的各个领域中得到了广泛的应用。

面向对象的设计思想是在原来结构化程序设计方法基础上的一个质的飞跃,C++完美地体现了面向对象的各种特性。

[1]

  C++程序设计语言是由来自AT&

TBellLaboratories的BjarneStroustrup设计和实现的,它兼具Simula语言在组织与设计方面的特性以及适用于系统程序设计的C语言设施。

C++最初的版本被称作“带类的C(Cwithclasses)”[Stroustrup,1980],在1980年被第一次投入使用;

当时它只支持系统程序设计和数据抽象技术。

支持面向对象程序设计的语言设施在1983年被加入C++;

之后,面向对象设计方法和面向对象程序设计技术就逐渐进入了C++领域。

在1985年,C++第一次投入商业市场。

在1987至1989年间,支持范型程序设计的语言设施也被加进了C++。

[2]

随着若干独立开发的C++实现产品的出现和广泛应用,正式的C++标准化工作在1990年启动。

标准化工作由ANSI(AmericanNationalStandardInstitute)以及后来加入的ISO(InternationalStandardsOrganization)负责。

1998年正式发布了C++语言的国际标准[C++,1998]。

而VC是基于C,C++语言,主要由是MFC组成,是与系统联系非常紧密的编程工具,它兼有高级,和低级语言的双重性,功能强大,灵活,执行效率高,几乎可说VC在Windows平台无所不能。

[3]

AVI(AudioVideoInterleave)是一种音频视像交插记录的数字视频文件格式。

1992年初Microsoft公司推出了AVI技术及其应用软件VFW(VideoforWindows)。

在AVI文件中,运动图像和伴音数据是以交织的方式存储,并独立于硬件设备。

这种按交替方式组织音频和视像数据的方式可使得读取视频数据流时能更有效地从存储媒介得到连续的信息。

AVI可以算是Windows操作系统上最基本的也是最常用的一种媒体文件格式,兼容性比较好。

构成一个AVI文件的主要参数包括视像参数、伴音参数和压缩参数等。

OpenCV是Intel公司支持的开源计算机视觉库。

它轻量级而且高效——由一系列C函数和少量C++类构成,实现了图像处理和计算机视觉方面的很多通用算法。

计算机视觉市场巨大而且持续增长,且这方面没有标准API,目前的计算机视觉软件大概有以下三种:

  1.研究代码(慢,不稳定,独立并与其他库布兼容)

  2.耗费很高的商业化工具(比如Halcon,MATLAB+Simulink)

  3.依赖硬件的一些特别的解决方案(比如视频监控,制造控制系统,医疗设备)

  这是目前的现状。

而标准的API将简化计算机视觉程序和解决方案的开发。

OpenCV致力于成为这样的标准API。

本文在此基础上设计一个基于OpenCV的视频播放器,可以更简捷的实现avi格式视频文件的播放,暂停,停止等操作。

1.2OPENCV简介

1.2.1OpenCV

OpenCV是Intel资助的开源计算机视觉库。

它由一系列C函数和少量C++类构成,实现了图像处理和计算机视觉方面的很多通用算法。

OpenCV拥有包括300多个C/C++函数的跨平台的中、高层API。

它不依赖与其它的外部库,尽管也可以使用某些外部库。

OpenCV对非商业应用和商业应用都是免费的。

另外OpenCV也为Intel公司的IntegratedPerformancePrimitives(IPP)提供了透明接口。

这意味着如果有为特定处理器(INTEL的处理器)优化的的IPP库,OpenCV将在运行时自动加载这些库。

OpenCV的一个目标是构建一个简单易用的计算机视觉框架,以帮助开发人员更便捷地设计更复杂的计算机视觉相关应用程序。

OpenCV包含的函数有500多个,覆盖了计算机视觉的许多应用领域,如工厂产品检测、医学成像、信息安全、用户界面、摄像机标定、立体视觉和机器人等。

因为计算机视觉和机器学习密切相关,所以OpenCV还提供了MLL(MachineLearningLibrary)机器学习库。

该机器学习库侧重于统计方面的模式识别和聚类(clustering)。

MLL除了用在视觉相关的任务中,还可以方便地应用于其他的机器学习场合。

开发OpenCV的目的是为了促进CPU密集型应用。

为了达到这一目的,Intel启动了多个项目,包括实时光线追踪和三维显示墙。

一个在Intel工作的OpenCV作者在访问一些大学时,注意到许多顶尖大学中的研究组(如MIT媒体实验室)拥有很好的内部使用的开放计算机视觉库—— 

(在学生们之间互相传播的代码),这会帮助一个新生从高的起点开始他/她的计算机视觉研究。

这样一个新生可以在以前的基础上继续开始研究,而不用从底层写基本函数。

因此,OpenCV的目的是开发一个普遍可用的计算机视觉库。

在Intel的性能库团队的帮助下,OpenCV实现了一些核心代码以及算法,并发给Intel俄罗斯的库团队。

这就是OpenCV的诞生之地:

在与软件性能库团队的合作下,它开始于Intel的研究中心,并在俄罗斯得到实现和优化。

1.2.2OpenCV的应用领域

大多数计算机科学家和程序员已经意识到计算机视觉的重要作用。

但是很少有人知道计算机视觉的所有应用。

例如,大多数人或多或少地知道计算机视觉可用在监控方面,也知道视觉被越来越多地用在网络图像和视频方面。

少数人也了解计算机视觉在游戏界面方面的应用。

但是很少有人了解大多数航空和街道地图图像(如Google的StreetView)也大量使用计算机定标和图像拼接技术。

一些人知道安全监控、无人飞行器或生物医学分析等方面的应用,但是很少人知道机器视觉是多么广泛地被用在工厂中:

差不多所有的大规模制造的产品都在流水线上的某个环节上自动使用视觉检测。

OpenCV所有的开放源代码协议允许用户使用OpenCV的全部代码或者OpenCV的部分代码生成商业产品。

使用了OpenCV后,用户不必对公众开放自己的源代码或改善后的算法,虽然Intel公司非常希望用户能够开放源代码。

许多公司(IBM,Microsoft,,SONY,Siemens和Google等其他公司)和研究单位(例如斯坦福大学、MIT、CMU、剑桥大学和INRIA)中的人都广泛使用OpenCV,其部分原因是OpenCV采用了这个宽松的协议。

Yahoogroups里有一个OpenCV论坛( 

000个会员。

OpenCV在全世界广受欢迎,在中国、日本、俄罗斯、欧洲和以色列都有庞大的用户群。

自从OpenCV在1999年1月发布alpha版本开始,它就被广泛用在许多应用领域、产品和研究成果中。

相关应用包括卫星地图和电子地图的拼接,扫描图像的对齐,医学图像去噪(消噪或滤波),图像中的物体分析,安全和入侵检测系统,自动监视和安全系统,制造业中的产品质量检测系统,摄像机标定,军事应用,无人飞行器,无人汽车和无人水下机器人。

将视觉识别技术用在声谱图上,OpenCV可以进行声音和音乐识别。

在斯坦福大学的Stanley机器人项目中,OpenCV是其视觉系统的关键部分。

Stanley在DARPA机器人沙漠挑战赛中,赢得了二百万美元奖金[Thrun06]。

[4]

1.2.3计算机视觉

计算机视觉是将来自静止图像或视频的数据转换成一个决策或者一种新的表达方式的过程,所有的这些转换都是为了达到某个目标。

输入数据可以包含一些辅助信息,如“摄像机架在汽车上”或“激光扫描仪在1米处发现一个物体”。

最终的决策可能是“场景中有一个人”或“在这个切片中有14个肿瘤细胞”。

一种新的表达方式可以是将一张彩色照片转为灰度照片,或者从图像序列中去除摄像机晃动影响。

因为人类是视觉动物,所以会误以为可以很容易地实现计算机视觉。

当人们凝视图像时,就会很容易从中找到一辆汽车。

人们凭直觉会觉得很容易。

人脑将视觉信号划分入很多个通道,将各种不同的信息输入了大脑。

大脑有一个关注系统,会根据任务识别出图像的重要部分,并做重点分析,而其他部分则分析得较少。

在人类视觉流中存在大量的反馈,但是目前我们对之了解甚少。

肌肉控制的传感器以及其他所有传感器的输入信息之间存在广泛的关联,这使得大脑可以依赖从出生以来所学到的信息。

大脑中的反馈在信息处理的各个阶段都存在,在传感器硬件(眼睛)中也存在。

在眼睛中通过反馈来调节通过瞳孔的进光量,以及调节视网膜表面上的接收单元。

在计算机视觉系统中,计算机接接收到的是来自摄像机或者磁盘文件的一个数值矩阵。

一般来说,没有内置的模式识别系统,没有自动控制的对焦和光圈,没有多年来经验的积累。

视觉系统通常很低级。

实际上,计算机视觉问题比前面我们提到的更糟糕,它是不可解的。

给出三维世界的二维视图,是没有固定方法来重建出三维信息的。

在理论上,此类病态问题没有惟一和确定的解。

即使数据很完美,同一张二维图像也可以表示多种三维场景。

然而,如前面提到的,数据会被噪声和形变影响。

这些影响来自真实世界的变化(天气、光线、反射、运动),镜头和机械结构的不完美,传感器上的长时间感应(运动模糊),传感器上和其他电子器件上的电子噪声,以及图像采集后的图像压缩引入的变化。

都是很令人头疼的问题。

设计实际系统时,为了克服视觉传感器的限制,通常会使用一些其他的上下文知识。

考虑这样一个例子,移动机器人在室内寻找并捡起订书机。

机器人可以利用这个先验知识:

可在办公室内发现桌子,订书机最可能在桌子上被找到。

这给出了一个隐含的尺寸参考或参照,也就是订书机能够放在桌子上。

这也可以用于消除在不可能的地方(例如在天花板或者窗户上)错误识别出订书机的可能性。

机器人也完全可以忽略一个200英尺大小的跟订书机形状类似的广告飞艇,因为飞艇周围没有桌子的木纹背景。

与之相反,在图像检索中,数据库中的所有订书机图像都是对真正的订书机拍摄的,而且尺寸很大和形状不规划的订书机图像一般不可能被拍到。

也就是拍摄者一般只拍摄真正的、普通大小的订书机图像。

而且人们拍照时一般会将被拍物体置于中心,且将物体放在最能表现其特征的方向上。

因此在由人拍摄的图像中,具有相当多的隐含信息。

[5]

人们也可以使用机器学习技术对上下文信息进行显式建模。

隐含的变量(例如物体大小、重力方向及其他变量)都可以通过标记好的训练数据里的数值来校正。

或者,也可以通过其他的传感器来测量隐含的变量。

使用激光扫描仪可以精确测量出一个物体的大小。

计算机视觉面临的另一个难题是噪声问题。

我们一般使用统计的方法来克服噪声。

例如,一般来说不可能通过比较一个点和它紧密相邻的点来检测图像里的边缘。

但是如果观察一个局部区域的统计特征,边缘检测会变得容易些。

由局部区域卷积的响应连成的点串,构成边缘。

另外可以通过时间维度上的统计来抑制噪声。

还有一些其他的技术,可以从数据中学习显式模型,来解决噪声和畸变问题。

例如镜头畸变,可以通过学习一个简单多项式模型的参数来描述这种畸变,然后可以几乎完全校正这种畸变。

计算机视觉拟根据摄像机数据来采取行动或者做出决策,这样的行动或决策是在一个指特定目的或任务的环境中来解决。

我们从图像去除噪声和损坏区域,可以让监控系统在有人爬过栅栏时给出报警,或者在一个游乐园里监控系统能够数出总共有多少人通过了某个区域。

在办公室巡游的机器人的视觉软件所采用的方法与固定摄像机的不同,因为这两个系统有不同的应用环境和目标。

通用的规律是:

对计算机视觉应用环境的约束越多,则越能够使用这些约束来简化问题,从而使最终的解决方案越可靠。

[6]

OpenCV的目标是为解决计算机视觉问题提供基本工具。

在有些情况下,它提供的高层函数可以高效地解决计算机视觉中的一些很复杂的问题。

当没有高层函数时,它提供的基本函数足够为大多数计算机视觉问题创建一个完整的解决方案。

对于后者,有几个经过检验且可靠的使用OpenCV的方法;

所有这些方法都是首先大量使用OpenCV函数来解决问题。

一旦设计出解决方案的第一个版本,便会了解它的不足,然后可以使用自己的代码和知识来解决(更为广知的一点是“解决实际遇到的问题,而不是我们想像出来的问题”)。

解决方案所存在的不足可以通过系统所用的环境限制来解决。

[7]

1.3论文主要研究内容及研究意义

本课题主要是在VC6.0开发环境下,通过调用OpenCVAPI(计算机视觉库),实现一个基于OpenCV的视频播放器的设计。

该视频播放器需要实现的基本功能有:

有用户界面,avi格式视频文件的播放,暂停,停止,进度拖动等。

最后,对本软件的开发过程进行简要总结,并介绍一下本人的体会和感想。

通过本次课题设计可使更多的人们了解MicrosoftVisualStudio6.0的发展背景,掌握基本的VC++6.0软件开发平台的应用,熟悉VC++6.0编程环境,学习基本操作;

同时还可以更广泛的推广计算机视觉库(即OpenCV)的应用,使人们对其有较深的认识,深入了解OpenCV的发展历史,主要特点。

1.4论文组织结构

本文主要包括了背景介绍,多媒体介绍,VC++6.0软件开发平台和OpenCV的应用,模块设计,系统设计,测试结果及分析等内容。

第一章主要介绍了课题研究的背景及本设计的主要内容;

第二章主要是对视频技术进行了简单介绍,包括多媒体技术及视频的格式等;

第三章是对OpenCV函数库做了一些相关介绍包括特点及主要应用等;

第四章是对VC6.0的开发环境做了较详细的介绍包括MicrosoftVisualStudio6.0的发展过程,组件工具(编译器工具、VC++库、VC++开发环境)等;

第五章详细的介绍了视频播放器的设计与实现,包括模块划分与系统设计,流程图及详细的的程序编码等;

第六章介绍了程序的运行结果,播放器功能的实现及对设计结果的分析,找出设计过程中存在的不足之处,以便加以改正。

2视频技术概述

对于视频,我们并不陌生,日常生活中经常看的电影、电视就是视频的典型应用。

人类接收的信息中约有70%来自视觉,周围景物在人眼视网膜上的映像是人类最有效、最重要的信息交流方式。

视频具有确切、直观、具体生动、真实和高效的特点,这正是视频技术的无穷魅力所在。

简介动态图像传输在电信领域被称为视频业务或视讯业务,在计算机界常常称为多媒体通信、流媒体(下载像流水)通信等。

视频通信技术是实现和完成视频业务的主要技术。

其压缩标准是MPEG(动态图像专家小组),它提出了一种电视图像和声音编码的国际标准,用在数据传输率为1.5Mb/s。

 对于视频业务应用而言,主要是宽带网络技术。

随着计算机软硬件技术的迅猛发展,视频技术也得到了飞速发展。

现在,数字娱乐、多媒体通信、高清晰度电视、数字电视、宽带网络等都是围绕如何有效地交流视频信息而展开研究的。

但是,由于视频信息十分丰富且信息量大,故对视频信号的处理、传输、存储和显示等都提出了新的要求。

因此,视频技术的研究和应用是目前信息技术领域最热门的话题之一。

2.1多媒体技术

多媒体究竟是什么?

通常,每个人对此都有自己的观点。

多媒体曾经被用来描述很多东西,从复杂的新型交互式艺术到摇滚音乐会中闪烁的彩色聚光灯。

但是多媒体是一种真正的媒体,不能局限于一个简单的,有框架的定义。

今天,这个词可能会更加模糊,就象“数字化”这个词,在它的全盛时期也让入迷惑一样。

“多媒体”一词译自英文“Multimedia”,媒体(medium)原有两重含义,一是指存储信息的实体,如磁盘、光盘、磁带、半导体存储器等,中文常译作媒质;

二是指传递信息的载体,如数字、文字、声音、图形等,中文译作媒介。

从字面上看,多媒体就是由单媒体复合而成的。

多媒体技术从不同的角度有着不同的定义。

有人定义多媒体计算机是一组硬件和软件设备;

结合了各种视觉和听觉媒体,能够产生令人印象深刻的视听效果。

在视觉媒体上,包括图形、动画、图像和文字等媒体,在听觉媒体上,则包括语言、立体声响和音乐等媒体。

用户可以从多媒体计算机同时接触到各种各样的媒体来源。

也有人定义多媒体是“文字、图形、图像以及逻辑分析方法等与视频、音频以及为了知识创建和表达的交互式应用的结合体”。

概括起来就是:

多媒体技术是以数字技术为基础,把通信技术(电话和传真),广播技术(电台和电视)和计算机技术融于一体,能够对文字,图形,图像,声音,视频等多种媒体信息进行存储,传送和处理的综合性高新技术。

简言之,多媒体技术就是具有集成性、实时性和交互性的计算机综合处理声文图信息的技术。

在人类信息科学技术史上,它是继活字印刷,无线电-电视技术,计算机技术之后的又一次新的技术革命,在信息社会中占有重要的地位。

多媒体技术的发明,终于使人和机器从原来的对立中摆脱出来,人性化的局面、虚拟现实的出现,直到人工智能的进步,语音的输入使我们刹时感到PC已不再冰冷,芯片上已能出现人的情感,而且是高智能的集成。

众所周知,早期的计算机仅处理数值或文字信息,其输入和输出信息只能以“文本”的形式出现。

20世纪80年代问世的图形用户界面,使计算机可用图形来参与人-机交互,从此令用户界面面目一新。

从20世纪90年代以来,多媒体技术逐步成熟,先后发布了MPC1.0,MPC2.0,MPC3.0等多媒体个人计算机技术规范,推动了多媒体计算机的性能不断提高。

但是,多媒体技术的应用并不限于多媒体计算机。

在现代生活中,从VCD光盘的播放到电子出版物的制作,从多媒体万维网到电视会议的运行,处处都包含了多媒体技术的应用。

多媒体技术和计算机网络技术,已成为当代计算机应用中最热门的两个主题。

多媒体技术不仅集成了多媒体,而且集成可多种技术,包括计算机技术,通信技术,电视技术和其他音像处理技术。

通过在一个文件中把来自多个通道的信息同一获取,组织,存储和合成,使文字,图像,声音等各种信息能在播放时同步的作用于我们的听觉,视觉等感官,从而取得最佳的效果。

在多媒体系统中,声音和活动着的视频图像都是与时间轴密切相关的。

随着多媒体技术的进步,多媒体系统已经具备对多媒体信息进行实时处理的能力。

可视电话,电视会议,远程教学,远程医疗,使千里之外的人物与场景犹如近在咫尺,可面对面地实现对话。

交互性是多媒体技术的关键特性之一。

传统电视中也包含了多媒体的信息,但它缺乏交互性,用户只能被动的收看。

在多媒体系统中,用户借助交互活动可控制信息的传播,甚至参与信息的组织过程,使之能够对感兴趣的画面或内容进行记录或者专门的研究。

[8]

我们知道,多媒体技术是建立在计算机技术的基础之上的,而计算机只能识别“0”,“1”这两种二进制数据。

因此在多媒体系统中,所有的多媒体信息都是用数字信号表示。

与传统电视使用的模拟信号相比,数字信号不仅易于进行加密,压缩等数值运算,因而可提高信息的安全与处理速度;

而且由于它只有“0”,“1”这两种状态,所以抗干扰能力强,在信号存储和复制中能够达到更高的保真度,尤其是用于远程距离的无失真传输。

多媒体技术的无限发展需要计算机硬件的支持,早期的PC只能处理文本和数字,借助键盘和显示器用文本媒体进行人-机交互。

多媒体个人计算机(MPC)的诞生,使计算机能够集声音,文,图,像的处理于一身,同时把人-机交互扩充到声音和图像等媒体。

所谓多媒体个人电脑(MultimediaPersonalComputer,MPC)就是具有了多媒体处理功能的个人计算机,它的硬件结构与一般所用的个人机并无太大的差别,只不过是多了一些软硬件配置而已。

一般用户如果要拥有MPC大概有两种途径:

一是直接够买具有多媒体功能的PC机;

二是在基本的PC机上增加多媒体套件而构成MPC。

其实,现在最近用户所购买的个人电脑绝大多都具有了多媒体应用功能。

[9]

一般的多媒体系统主要由四个部分的内容组成:

多媒体硬件系统、多媒体操作系统、媒体处理系统工具和用户应用软件。

(1)多媒体硬件系统:

包括计算机硬件、声音/视频处理器、多种媒体输入/输出设备及信号转换装置、通信传输设备及接口装置等。

其中,最重要的是根据多媒体技术标准而研制生成的多媒体信息处理芯片、光盘驱动器等

(2)多媒体操作系统:

也称为多媒体核心系统(Multimediakernelsystem),具有实时任务调度、多媒体数据转换和同步控制对多媒体设备的驱动和控制,以及图形用户界面管理等。

(3)媒体处理系统工具:

或称为多媒体系统开发工具软件,是多媒体系统重要组成部分。

(4)用户应用软件:

根据多媒体系统终端用户要求而定制的应用软件或面向某一领域的用户应用软件系

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1