首页 文章

OpenCV 2.4.11和3.0.0之间有什么区别?

提问于
浏览
26

OpenCV 的最新版本显示2015年2月 2.4.11 ,这是最近的 3.0.0 ,处于测试阶段 . 他们之间有什么区别 . 我应该使用OpenCV 2.4.11而不是3.0.0,因为我在3.0.0中遇到了一些错误 . 他们的发布如何运作?

3 回答

  • 12

    除了上面提供的答案之外,另一个重要的区别是SIFT / SURF特征检测已从默认的openCV 3.0软件包中取消 . 由于它们已获得专利,openCV已将“非自由”算法移至不同的包:

    opencv_contrib
    
  • 41

    3.0.0应该带来许多新功能,但它目前是测试版而不是正式版(可能不稳定) . 最后的官方稳定版本是2.4.11 .

    如果您在2.4.11中没有检索到功能,或者您是冒险的话,请使用3.0.0(3.0.0beta很棒,最终版本很快就会发布) . 如果您想要安全性而无需额外需求,请使用2.4.11 .

  • 8

    虽然OpenCV 3.0中有新功能(如文本检测,KAZE检测器),但对于大多数开发人员来说,这种比较与功能无关 . 这是关于 speed . 除非您立即投入 生产环境 ,否则我建议您使用OpenCV 3.0 . 而且,这远非冒险 .

    • 关键区别在于OpenCV 3.0中的透明API . 几乎所有的OpenCV 3.0方法都是OpenCL加速的 . 因此,所有方法都可以在GPU上运行,这可以导致从10%到230%的改进 . 只需更改代码中所需的是使用 UMat 您曾经使用的 Mat . 样品(1) . 如果您在OpenCV 2.4 . *中需要此性能,则必须显式调用 cv::ocl::*cv::gpu::* 方法 .

    • 如果您恰好是Java开发人员,那就更好了 . 早期不可用的类/方法的Java包装器现在在OpenCV 3.0中提供(参见广泛使用的KalmanFilter)

    • 内部模块重组有一些变化,从开发人员的角度来看,这种变化很小,因为可以通过更改代码中的OpenCV标头来解决这些变化 .

    关于发布周期,快速浏览OpenCV github repo(2)显示,pull请求主要进入OpenCV 3.0的master分支 . 所以我假设,主要的错误修复可能会被移植到2.4 . *分支 .

    有关更多信息,请阅读差异(3)和(4) . 关于您在3.0测试版中遇到的错误,如果您可以在OpenCV问题页面(5)上使用最小的完整运行示例来提升它们,这可能会有所帮助 .

相关问题