12

私は学校のプロジェクトに取り組んでおり、その一部は Android 用のコンピューター ビジョン ライブラリに関する現在の状況に関するものである必要があります。コンピューター ビジョンは魅力的なテーマのように思えたので、私は大きな熱意を持ってそこに行きましたが、1 週間以上探し続けましたが、あまり見つかりませんでした。ライブラリ自体とそれらの比較に関する情報を提供できるようにしたいと考えています。

これまでに見つけたものを共有します。

OpenCV

  • 最も先進的で最も人気のあるもののようです。

  • 最大数の機能を提供

  • 下位互換性に問題があった

  • 速いです(少なくともそう聞いたが、それについての情報はありません)

  • それについての本が最大量あります(少なくともC++バージョンの場合)

JavaCV

  • opencv を含む他のいくつかのライブラリのラッパーです

FastCv

  • クアルコムが背後にある新しい。

ウィキチュード

  • これは拡張現実向けですが、その核心は依然としてコンピュータービジョンです。

ご覧のとおり、私はそれについて少し情報を持っており、すべてのライブラリに対して独自のテストを行うことは、現在のコンピューター ビジョンのスキルをはるかに超えています。

よろしく、ピーター。

4

6 に答える 6

26

基本的に、OpenCV と FastCV の 2 つのオプションがあります。

OpenCV は、FastCV よりも多くの機能を備えた、より成熟したライブラリです。多くのコンピューター ビジョン タスクでは、FastCV では最も基本的な機能のみを見つけることができますが、OpenCV ではほとんどすべての一般的な代替機能を利用できます。たとえば、利用可能な機能検出器を確認します。OpenCV には Harris、SURF、SIFT、FAST などがあります。一方、FastCV には Harris と FAST しかありません。OpenCV には、デスクトップ コンピューターやモバイル コンピューティング デバイスなど、さまざまなハードウェアのハードウェア最適化が含まれています。デスクトップで OpenCV を使用する機能により、モバイル開発の作業を開始する前に、高速なデスクトップ コンピューターでコードを微調整してテストできるため、より柔軟な開発オプションが提供されます。また、OpenCV はKhronos Computer Vision Group Proposal の一部と見なされます. したがって、これが承認されれば、OpenCV はコンピューター ビジョンの標準 API になる可能性があります。私の知る限り、FastCV は Snapdragon CPU に対して優れた最適化を提供します。これは短期的には決定に重要な役割を果たす可能性がありますが、OpenCV がそのギャップを非常に迅速に埋めてくれると確信しています。

OpenCV パスを選択すると、Android NDK を使用する OpenCV と Android SDK を使用する JavaCV の 2 つのサブパスがあります。JavaCV は、JavaCpp に基づく OpenCV のラッパーです。OpenCV はオブジェクト指向の C++ API も提供しますが、JavaCV はほとんどが C API をラップします。たとえば、C++ API は、未使用のメモリの解放を自動的に処理します。ただし、C API (したがって JavaCV) では、未使用の画像のリリースを手動で処理する必要があります。また、JavaCV で問題が発生した場合、チェックする間接的な部分が多すぎて、問題に取り組むのが困難です。OpenCV を直接使用すると、問題を特定しやすくなります。ただし、Android の場合、NDK の追加の難しさを忘れてはなりません。

特定のアプリケーションで利用可能な OpenCV 機能が必要であり、カスタムのピクセル レベル処理コードが必要ない場合は、JavaCV が最適です。ただし、かなりの量のカスタム画像処理コードが必要な場合は、Java コードによって速度が低下するため、とにかく NDK に切り替える必要があります。後者の場合、OpenCV を選択することをお勧めします。

于 2012-05-29T19:29:44.483 に答える
7

現時点で最高のコンピューター ビジョン ライブラリである OpenCV を使用します。C++ で関数をプログラミングしてから、JNI ライブラリを使用して Android アプリケーションをコンパイルします。公式ドキュメントでそれを行う方法についての情報があります。

私はこの構成で作業しましたが、Android での OpenCV のパフォーマンスは非常に優れています。固定小数点演算でいくつかの関数を作成すると、利点に気付くでしょう。幸運を

于 2012-05-27T21:53:07.530 に答える
5

Android ベースのプロジェクトの場合、JavaCV から簡単に開始できます。OpenCV で利用できるほぼすべての関数が含まれています。

しかし、JavaCV に関する豊富なドキュメントはありませんが、OpenCV にはあります。そのため、OpenCV ドキュメントから関連するメソッドを見つけて、JavaCV でそれらを使用できます (同じメソッド名)。

ここに完全なドキュメントがあります。これは、Eclipse - Android 環境で JavaCV をセットアップする方法について説明しています。

于 2012-05-25T08:09:55.820 に答える
3

vizierは非常にうまく答えましたが、私は彼の分析に誤りがあるという印象を受けています。彼はOpencvにOpenCV4Androidと呼ばれるAndroid用のバージョンがあることに気付いていないと思います。これは、c ++機能のJavaラッパーです。つまり、Android NDKの使用を回避し、すべてをJavaでプログラムできます。これにより、JavaCVの「非公式」ライブラリが冗長になります。ただし、これは、opencvをラップするだけでなく、他の多くの優れたCVライブラリもラップするという事実を除きます。

編集:

これは、OpenCVの推奨に関するより巧妙な結論を変えるものではなく、実際にそれを選択するためのより多くのポイントを追加します。

于 2012-05-30T09:25:14.943 に答える
1

Android の CV には、Google Mobile Vision APIという新しいオプションがあります。API は公開されてcom.google.android.gms.visionおり、任意の画像ビットマップからさまざまな種類のオブジェクト (顔、バーコード、顔の特徴) を検出できます。

于 2015-08-13T20:34:09.737 に答える
0

OpenCV から始めて、機能追跡、畳み込み、膨張/浸食、そしておそらく SVM などの重要な機能を移植します。Android用にコンパイルする場合、これらの呼び出しを #ifdef __ANDROID__ でラップしてから、同等のFastCVを呼び出します。抽象化はあなたの友達です。

于 2016-08-11T03:39:27.333 に答える