画像処理技術を含む Android アプリを構築しています。ランタイムの観点から、 JavaCV と OpenCV のどちらが優れていますか?
3 に答える
実行時のオーバーヘッドはほぼ同じに見えますが、android-opencv ラッパーは、直接 NIO バッファーを介して生データにアクセスできないため、Java でのカスタム処理の効率が大幅に低下します。JavaCV は、これらのタスクに対してより効率的です。JavaCV の作成者として、私はその API も気に入っています :) Android-opencv よりも元の C/C++ API に近いです。
編集: もう 1 つの違いは、android-opencv では、NDK と JNI を使用して関数を記述することをユーザーに強制することです。JavaCV はJavaCPPに基づいているため、NDK や JNI を扱う必要がなく、より簡単にネイティブ関数を作成できます。
通常、Android NDKを使用してネイティブコードを作成する方が、SDKを使用するよりもはるかに高速です。NDKでopencvを使用して、ここで素晴らしいチュートリアルを見つけることができます。NDKフレームワークを使用すると、openGL関数にアクセスできることに注意してください。
JavaCV は、ネイティブ OpenCV ライブラリの単なる Java ラッパーです。OpenCV は Java/SWIG バインディングを提供します。私は両方のバインディングを使用しましたが、両者の間に大きな違いは見られませんでした。
ネイティブのみのアプリを作成している場合は、ネイティブの OpenCV を使用してください。