OpenCV 3 将会为我们带来什么?

今年8月,OpenCV 3.0 alpha发布,同时宣布beta将在仲秋时节发布,而正式版会在圣诞节和新年的假期就绪。其中beta版已在光棍节发布,而从目前GitHub仓库的情况来看,正式版可能还得过一阵子才行。

3.0将是OpenCV的又一个革命性版本,它会带来哪些改变呢?

  • 大体上保留了OpenCV 2经典的C++和Python编程接口风格。其中,Python接口大大增强,也加入了Python 3.x的支持。一般来说,以前版本的程序只要做少数修改,就可以使用OpenCV 3了。另外还改善了Java接口,并且加入了MATLAB支持。
  • 架构调整。图片、视频编解码从highgui模块分离出来,组成了imgcodecs和videoio。原先的OpenCL模块ocl事实上与其它模块融为一体,而CUDA加速模块gpu分解成了数个以cuda开头的模块。此外,除了官方支持的OpenCV代码,还有一些自发贡献的内容、不稳定的内容,或者版权尚存争议的内容,都放到了新的仓库opencv_contrib中。
  • 更多新算法。新版本包括了TLD、鱼眼镜头模型等全新算法,还包括了一些更高层次可以直接拿来用的高级封装,比如汽车检测等。
  • 引入T-API,使OpenCL加速更容易。目前可以参考OpenCV源代码中T-API的范例。可以发现,开启和关闭OpenCL加速,只需要一个语句就够了。这也就是为什么ocl模块会消失了吧。
  • 更多指令集优化。除了之前为Intel CPU做的优化以外,OpenCV 3还容纳了ARM平台NEON指令集的支持。通过英特尔的帮助,OpenCV 3对x86和x64平台默认使用IPP,这杠杠的加速我就不多说了,上图!
IPP加速效果
IPP加速效果

那么现在大家最关心的应该是稳定性了。OpenCV 3.0 beta通过了绝大部分测试,只有一小部分涉及32位Windows的没有通过,作一般使用也不会有太大问题了。

遗憾的是3.0的文档还没有正式发布,如果需要,得自己到源代码编译文档。而且现阶段文档还有很多2.x的残留。不过,稍微摸索一下就能解决大多数问题。总之,如果你在用OpenCV做开发的话,尤其是性能很重要的开发,现在可以试试OpenCV 3.0了。

推荐阅读更多精彩内容