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

pul*_*ion 28 opencv opencv3.0

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

Kir*_*ran 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. 从开发人员的角度来看,内部模块重组等更改很小,因为可以通过更改代码中的OpenCV头来解决这些更改.

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

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


小智 12

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

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

  • 3.0.0不会完全向后兼容2.4.x. 除此之外,许多类已经完全重写,并强调GPU加速功能.添加了许多新模块,您可以看到更改列表[此处](http://code.opencv.org/projects/opencv/wiki/ChangeLog). (7认同)

ser*_*eek 8

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

opencv_contrib
Run Code Online (Sandbox Code Playgroud)