【发布时间】:2015-06-17 06:09:53
【问题描述】:
OpenCV 的最新版本显示 2.4.11 Feb,2015 比 3.0.0 更新,后者处于 Beta 阶段。他们之间有什么区别。我应该在 3.0.0 上使用 OpenCV 2.4.11,因为我在 3.0.0 中遇到了一些错误。他们的版本如何运作?
【问题讨论】:
-
2021 更新:使用 3.x:opencv.org/opencv-3-0
OpenCV 的最新版本显示 2.4.11 Feb,2015 比 3.0.0 更新,后者处于 Beta 阶段。他们之间有什么区别。我应该在 3.0.0 上使用 OpenCV 2.4.11,因为我在 3.0.0 中遇到了一些错误。他们的版本如何运作?
【问题讨论】:
虽然 OpenCV 3.0 中有新功能(如文本检测、KAZE 检测器),但对于大多数开发人员来说,这种比较与功能无关。这是关于速度。除非您立即投入生产,否则我建议您使用 OpenCV 3.0。此外,这远非冒险。
Mat 的地方使用 UMat。样品(1)。如果您需要 OpenCV 2.4.* 中的这种性能,您必须显式调用 cv::ocl::* 或 cv::gpu::* 方法。关于发布周期,快速查看 OpenCV github repo(2) 显示,拉取请求主要进入用于 OpenCV 3.0 的 master 分支。所以我假设,主要的错误修复可以向后移植到 2.4.* 分支。
有关更多信息,请阅读 (3) 和 (4)。关于您在 3.0 beta 中遇到的错误,如果您可以在 OpenCV 问题页面 (5) 上用最少的完整运行示例提出这些错误,这可能会有所帮助。
【讨论】:
3.0.0 应该会带来很多新功能,但它目前是测试版,而不是正式版本(可能不稳定)。上一个正式稳定版本是 2.4.11。
如果有您在 2.4.11 中没有检索到的功能,或者如果您喜欢冒险(3.0.0beta 很棒,最终版本应该很快就会发布),请使用 3.0.0。如果您想要安全而不需要额外的需求,请使用 2.4.11。
【讨论】:
除了上面提供的答案之外,另一个重要的区别是 SIFT/SURF 特征检测已从默认的 openCV 3.0 包中移除。 由于它们已获得专利,openCV 已将“非免费”算法转移到不同的包中:
opencv_contrib
【讨论】: