Подтвердить что ты не робот

В чем разница между OpenCV 2.4.11 и 3.0.0

В последней версии OpenCV отображается 2.4.11 февраль 2015 г., которая более поздняя, ​​чем 3.0.0, которая находится в бета-версии. В чем разница между ними. Должен ли я использовать OpenCV 2.4.11 более 3.0.0, так как я встречал несколько ошибок в 3.0.0. Как работают их релизы?

4b9b3361

Ответ 1

3.0.0 должен принести много новых функций, но в настоящее время он бета-версии, а не официальной версии (может быть нестабильной). Последний официальный стабильный релиз был 2.4.11.

Используйте 3.0.0, если есть функции, которые вы не извлекаете в 2.4.11, или если вы приключенны (3.0.0beta отлично, и окончательная версия должна скоро появиться). Если вам нужна безопасность без каких-либо дополнительных потребностей, используйте 2.4.11.

Ответ 2

Хотя в OpenCV 3.0 для большинства разработчиков есть новые функции (такие как обнаружение текста, детектор KAZE), это сравнение не о функциях. Это скорость. Если вы не сразу начнете производство, я предлагаю вам использовать OpenCV 3.0. Кроме того, это далеко не авантюрный.

  • Ключевым отличием является прозрачный API в OpenCV 3.0. Почти все методы 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) показывает, что запрос на вытягивание в основном идет в главную ветку, которая для OpenCV 3.0. Поэтому я предполагаю, что основные исправления ошибок могут быть переданы в раздел 2.4. *.

Более подробно о различиях читайте (3) и (4). О ошибках, с которыми вы столкнулись в версии 3.0 beta, было бы полезно, если бы вы могли поднять их с минимальным полным образцом для запуска на странице проблем с OpenCV (5).

Ответ 3

В дополнение к ответам, приведенным выше, еще одно важное отличие заключается в том, что обнаружение функции SIFT/SURF было снято с пакета openCV 3.0 по умолчанию. Поскольку они запатентованы, openCV переместил "несвободные" алгоритмы в другой пакет:

opencv_contrib