私の意図は、OpenCV アルゴリズム、特に ORB 機能検出器と記述子に対するいくつかの変更をテストすることです。そこで、デスクトップで C++ を使用して開発を開始し、OpenCV ソース (特に orb.ccp、fast.cpp、precomp.cpp、fast_score.cpp) からいくつかの .cpp ファイルをコピーしました。1 つ目はアルゴリズムのメイン ファイル、2 つ目は ORB で使用される特徴検出器、3 つ目と 4 つ目は fast.cpp の "includes" で呼び出されるために必要です。明らかに、OpenCV .hpp(s) からヘッダーとメソッド宣言をコピーして、ヘッダーを作成しました。関連する 2 つのクラス (ORB と FAST -> myORB と myFAST) の名前をすべてのファイルで変更しました。これにより、アルゴリズムの私のバージョンへの呼び出しと OpenCV の呼び出しを区別できるようになりました。すべての imgproc 関数、コア、Mat クラス ...
これまでのところうまく動作し、コピーしたバージョンの ORB を使用して、最終的にアルゴリズムに変更を適用することができます。
Android NDK に切り替えると問題が発生します。NDK でプロジェクトを設定した後、アルゴリズム ORB を使用するコードを実装する JNI メソッドを作成し、上記のファイル .cpp および .hpp をインポートし、.mk ファイルおよびその他の関連ファイルを設定します。私のファイルをコンパイルするために詰め込み、明らかにOpenCV4Androidを使用するようにプロジェクトを設定します。
問題は次のとおりです。私のアルゴリズムは機能し、コードはコンパイル/ビルドされ、Eclipse ADT によって起動され、myORB クラスを呼び出すことができます。ただし、ADT のエディターで (my)orb.cpp などの自分のバージョンのファイルを開くと、問題が発生します。存在しない (opencv) メソッドに関連して、コードに多数のエラーがあります (「解決できませんでした」 )、(opencv)メソッドが無効な引数で呼び出されました...したがって、ファイルを開いた後、エラーが表示され、ADTでプロジェクトを再度ビルドすることはできませんが、.cppファイルを削除してコピーし直すとプロジェクトは、再度開くまで問題なく再コンパイルされます...