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

时间:2015-04-11 15:48:43

标签: opencv opencv3.0

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

3 个答案:

答案 0 :(得分:42)

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

  1. 关键区别在于OpenCV 3.0中的透明API。几乎所有的OpenCV 3.0方法都是OpenCL加速的。因此,所有方法都可以在GPU上运行,这可以导致从10%到230%的改进。只需更改代码中所需的内容即使用UMat您曾使用的Mat。样品(1)。如果您在OpenCV 2.4。*中需要此性能,则必须明确调用cv::ocl::*cv::gpu::*方法。
  2. 如果您恰好是Java开发人员,那就更好了。早期不可用的类/方法的Java包装器现在在OpenCV 3.0中提供(参见广泛使用的KalmanFilter)
  3. 内部模块重组有一些变化,来自a 开发人员的观点,是次要的,因为可以解决 在代码中更改OpenCV标头。
  4. 关于发布周期,快速浏览OpenCV github repo(2)显示,pull请求主要进入OpenCV 3.0的master分支。所以我假设,主要的错误修复可以被反向移植到2.4。*分支。

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

答案 1 :(得分:12)

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

如果您在2.4.11中没有检索到功能,或者您喜欢冒险(3.0.0beta很棒且最终版本即将推出),请使用3.0.0。如果您想要安全性而无需额外需求,请使用2.4.11。

答案 2 :(得分:8)

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

opencv_contrib
相关问题