OpenCV 一、基本概念

  OpenCV的全称是:Open Source Computer VisionLibrary

OpenCV于1999年由Intel建立,现在由Willow Garage提供支持。OpenCV是一个基于BSD许可证授权(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。[1]最新版本是2.3。

二、应用领域

  1、人机互动

  2、物体识别

  3、图象分割

  4、人脸识别

  5、动作识别

  6、运动跟踪

  7、机器人

三、OpenCV的优势

  为什么有OpenCV

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

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

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

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

这是目前的现状。而标准的API将简化计算机视觉程序和解决方案的开发。OpenCV致力于成为这样的标准API。

  OpenCV致力于真实世界的实时应用,通过优化的C代码的编写对其执行速度带来了可观的提升,并且可以通过购买Intel的IPP高性能多媒体函数库(Integrated Performance Primitives)得到更快的处理速度。右图为OpenCV与现在其他主流视觉函数库的性能比较。

VRML(Virtual Reality Modeling Language)即虚拟现实建模语言。是一种用于建立真实世界的场景模型或人们虚构的三维世界的场景建模语言,也具有平台无关性。是目前Internet上基于 WWW的三维互动网站制作的主流语言。 VRML是虚拟现实造型语言(Virtual Reality ModelingLanguage)的简称,本质上是一种面向web,面向对象的三维造型语言,而且它是一种解释性语言。VRML的对象称为结点,子结点的集合可以构成复杂的景物。结点可以通过实例得到复用,对它们赋以名字,进行定义后,即可建立动态的VR(虚拟世界)。

VRML

  熟悉WWW的人都知道,受HTML的限制,网页只能是平面的结构,就算 JAVA语言能够为网页增色不少, 但也仅仅停留在平面设计阶段,而且实现环境与浏览者的动态交互是非常繁琐的。于是VRML应运而生。尤其是VRML 2.0标准,被称为第二代Web语言,它改变了WWW上单调、交互性差的弱点,将人的行 

为作为浏览的主题,所有的表现都随操作者行为的改变而改变。 VRML创造的是一个可进入、可参与的世界。你可以在计算机网络上看到一幅幅生动、逼真的三维立体世界,你可以在里面自由的遨游;你可以将网络上流行的MUD游戏转换为立体图形世界; 你可以将你公司的主页改编成三维主页,让浏览者领略到你公司的实貌,而不仅仅是简单的文本、表格... VRML是一种国际标准,其规范由国际标准化组织(ISO)定义,MIME类型为 x-world/x-vrml,它的表现与操作系统平台无关。VRML1.0只能创建静态的3D景物,你可以在它们之间移动,来测览三维世界。 VRML1.0是基于SGI公司的OpenInventor的文件格式,也是它的一个子集,是一种流行的3D图形的格式,并可链接到一般的WWW页。VRML1.0的立体链接,即构成了VRML的世界。 可以看出,用VRML1.0很容易做出三维物体,这也正是VRML1.0的基本目的所在。另外,有些厂家将VRML1.0进行了扩展,使其可以实现一些动画功能和交互性,但只能在Live3D 的环境下运行。由于VRML1.0的种种限制,VRML2.0的产生也就是不可避免的。VRML1.0只能创建静态的3D景物。因此虽然能用WML1.0来建立用户的虚拟代表,它们却不能做其他任何事情。但是,VRML2.0能够改变这一点,它增加了行为,可以让物体旋转、行走、滚动、改变颜色和大小。 比较起来,VRML2.0比VRML1.0有了长足的进步,其巨大的改变,正如当年Microsoft公司的Window95比之Windows3.0的进步。 

  其主要改进有: 

  1.增强了静态世界; 

  2.增加了交互性; 

  3.增加了动画功能; 

  4.增加了编程功能; 

  5.增加了原形定义功能。 

在VRML的世界里你可以用虚拟开关将灯光打开,当您走近清彻透底 的泉水时水声逐渐变响,当你向远处驶来的汽车招手时汽车停下来把你载上...

VRML的历史

  VRML 1.0标准是许多人的共同合作的结果。1993年9月,Tony Parisi和Mark Pesce开发了第一个VRML测览器。在第一届WW大会上(1994年秋于日内瓦),由Tim Berners-Lee和Dave Raggett所组织的一个名为BOF的小组提出了VRML这个名字,但当时所代表的含义Virtual Reality Markup Language,只是在后来由于为了反映三维世界的建立而将Markup改为了Modeling,缩写仍为VRML。在这次大会后,一个名www-vrmlmail list的组织成立了,并于1994年秋在第二次WWW大会上发布了VRML1.0的草稿。VRML1.0允许单个用户使用非交互功能,且没有声音和动画,它只允许建立一个可以探索的环境,但没有别的。虽然VRML1.0给人的最初印象看起来十分有限,但它的确形成了一组开发者可以用的工作核心, 以便建立RML2.0、VRML3·0或更新的版本。VRML2.0的规范于1996年8月通过,它在VRML1.0的基础上进行了很大的补充和完善。它以SGI公司的Move World提案为基础。业界范围内对于VRML2.0的支持非常大。 许多重要的厂商明确表示,VRML2.0将是他们产品结构的基础。 

  SGI公司,最有影响力的VRML厂商,已经引进Cosmo3D——一个VRML2.0的API,作为其新的工具结构Viper的基础。Cosmo3D的附件支持为SGI公司已有工具而编写的应用程序,而这些应用程序也就变成了Viper内置的专用功能。SGI公司许多广为传播的工具也支持VRML2.0。 

  Sun Microsystems公司,Java的先驱,最近选择VRML2.0作为其基于Java的3DAPI——Java3D的功能内核。Microsoft公司已经采纳了VRML2.0标准,并已利用DimensionX基于Java的Liquid Reality来生成用于WML2·0测览的ActiveX组件。可在WindowsNT4·0上找到的Microsoft公司的优化OpenGL 1·1,而Microsoft的Direct3D与已通过硬件加速显示了它强大无比的功能。