3

私の意図は、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ファイルを削除してコピーし直すとプロジェクトは、再度開くまで問題なく再コンパイルされます...

4

1 に答える 1

3

この問題は、Android ADT や Android NDK が原因です。エディターは誤ったエラーを識別します。実際、コンソールは、C コードがエラーなしでコンパイルされたことを示します。ただし、Eclipse は、彼によると、エラーを含むコード/アプリの実行を許可していません。したがって、これを回避する最も速い方法は、プロジェクトのプロパティを次のように変更することです。

Project -> Properties -> C / C + + General -> Code Analysis

エディターに表示される「問題」の「重大度」を「警告」または他のタイプに変更します。

于 2013-07-18T11:01:30.353 に答える