OpenCV 3.0与OpenCV 2.4的区别

文章作者:Tyan
博客:noahsnail.com  |  CSDN  |  简书

好久没关注OpenCV了,今天打开一看发现OpenCV竟然有3.0及以上的版本,感觉非常诧异,于是研究了一下2.4版本与3.0版本的区别。

1. OpenCV 3.0版本介绍

OpenCV 3.0正式版是在2015-06-04发布的,官网称到2015-06-04为止,OpenCV 3.0是最实用最快的OpenCV版本,并且它是非常稳定的,因为它分别在Windows,Linux,Mac,x64和ARM上进行了非常多的测试。

2. OpenCV 3.0与OpenCV 2.4的区别

OpenCV 3.0的新特性:

  • 大约有1500个代码片段在Github上提交评审,所有的代码块都进行同样的处理。

  • Github上添加了opencv_contrib仓库,许多新功能都在这个仓库。opencv_contrib仓库只与OpenCV 3.0协作,不支持OpenCV 2.4。使用 cmake … -D OPENCV_EXTRA_MODULES_PATH=<path_to opencv_contrib/modules> …可以将opencv和opencv_contrib一起构建。

  • OpenCV中有一个Intel IPP (IPPCV)的子集,OpenCV用户可以免费使用。在Windows,Linux和Mac系统的x86和x64平台上是默认使用的。

  • 引入了T-API(transparent API),GPU加速层使用了OpenCL。没有增加编译时或运行时对OpenCL的依赖。当OpenCL可用时,会进行检测并使用,也可以在编译或运行时禁用OpenCL。它覆盖了大约100个OpenCV功能。这项工作已经与AMD和Intel公司达成了协议并取得了它们的支持。

  • 大约40个函数使用NEON(一种指令集)进行了加速,由于这些函数大多是一些基本功能,因此高层功能也得到了加速。

  • OpenCV HAL层将简化NEON代码优化的创建,这将形成开源和私有OpenCV加速器的基础。

  • OpenCV文档目前位于Doxygen上:http://docs.opencv.org/master/

  • 清理了许多高层API,这些API来自features2d,calib3d,objdetect等。它们现在遵循统一的abstract interface – hidden implementation模式,充分利用智能指针(Ptr<>)。

  • 大幅度的改进和扩展Python和Java绑定(请看下面的Python绑定),新引入了Matlab绑定(仍在Alpha阶段)。

  • 改进Android支持,现在Java的OpenCV Manager对2.4和3.0都支持。

  • 大幅度改进WinRT支持,包括视频抓取和多线程能力。

  • 2013年和2014年的GSoC(谷歌编程之夏)中的许多成功代码都引入到了OpenCV 3.0和opencv_contrib中。

总结:OpenCV 3.0和2.4版本的最大不同在于,3.0版本进行了很多优化,执行速度更快,比2.4版本更适合企业级开发。

如果有收获,可以请我喝杯咖啡!