web-dev-qa-db-ja.com

OpenCV 2.4.11と3.0.0の違いは何ですか

OpenCVの最新リリースは2.4.11 2015年2月であり、これは.0.ベータ版よりも新しいです。それらの違いは何ですか。 3.0.0ではほとんどバグが発生していないため、3.0.0ではなくOpenCV 2.4.11を使用する必要があります。リリースはどのように機能しますか?

28
pulp_fiction

3.0.0は多くの新機能をもたらすはずですが、現在は公式リリースではなくベータ版です(不安定になる可能性があります)。最後の公式安定版リリースは2.4.11でした。

2.4.11で取得できない機能がある場合、または冒険好きな場合は、3.0.0を使用します(3.0.0ベータ版が優れているため、最終リリースはすぐにリリースされるはずです)。追加のニーズのないセキュリティが必要な場合は、2.4.11を使用します。

12
Tom A

OpenCV 3.0には新しい機能(テキスト検出、KAZEディテクターなど)がありますが、ほとんどの開発者にとって、この比較は機能に関するものではありません。それは約speedです。すぐに運用を開始するのでなければ、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 )の概要を見ると、プルリクエストは主にOpenCV 3.0のマスターブランチに送られています。だから私は仮定、主要なバグ修正は2.4。*ブランチにバックポートできました。

詳細については、違いについては()および( 4 )を参照してください。 3.0ベータ版で発生したバグについては、OpenCVの問題ページで最小限の完全な実行サンプルを使用してバグを上げることができれば役立ちます( 5 )。

42
Kiran

上記の回答に加えて、別の重要な違いは、SIFT/SURF機能の検出がデフォルトのopenCV 3.0パッケージから削除されたことです。それらが特許を取得しているため、openCVは「非フリー」アルゴリズムを別のパッケージに移動しました。

opencv_contrib
8
seriousgeek