基本的に、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 を選択することをお勧めします。