1

EclipseでOpenCVとJNIの部分を使用してAndroidアプリケーションを構築するときに問題が発生しました。

問題は、プロジェクトに対してndk-buildが正常に実行されることですが、Eclipseはエラーを表示します(通常はコードとは無関係です)。

たとえば、OpenCV4Androidサンプルの1つを作成しています。

boris@boris-ubuntu:~/src/OpenCV-2.4.3-android-sdk/samples/tutorial-3-native$ ndk-build 
Install        : libnative_camera_r2.2.0.so => libs/armeabi-v7a/libnative_camera_r2.2.0.so
Install        : libnative_camera_r2.3.3.so => libs/armeabi-v7a/libnative_camera_r2.3.3.so
Install        : libnative_camera_r3.0.1.so => libs/armeabi-v7a/libnative_camera_r3.0.1.so
Install        : libnative_camera_r4.0.0.so => libs/armeabi-v7a/libnative_camera_r4.0.0.so
Install        : libnative_camera_r4.0.3.so => libs/armeabi-v7a/libnative_camera_r4.0.3.so
Install        : libnative_camera_r4.1.1.so => libs/armeabi-v7a/libnative_camera_r4.1.1.so
Install        : libnative_sample.so => libs/armeabi-v7a/libnative_sample.so
Install        : libopencv_java.so => libs/armeabi-v7a/libopencv_java.so

正常に動作しますが、Eclipseにエラーが表示されます。

'size_t' is ambiguous '
Candidates are:
Field 'pt' could not be resolved
Field 'pt' could not be resolved
Field 'x' could not be resolved
Field 'y' could not be resolved
Invalid arguments '
Candidates are:
void detect(const cv::Mat &, ? &, const cv::Mat &)
void detect(const ? &, ? &, const ? &)
The type 'cv::FastFeatureDetector' must implement the inherited pure virtual method 'cv::FeatureDetector::detectImpl'

そして、他のプロジェクトでのこのような他のエラー。また、Eclipseインテリセンス(または適切に呼び出される方法:)は.cppファイルでは機能しません。

プロジェクトをクリーンアップし、objフォルダーとlibフォルダーを削除しようとしましたが、効果がありません。

私のシステムはubuntu12.04で、OpenCVのバージョンは2.4.3です。

助けてくれてありがとう!

4

2 に答える 2

2

ubuntu 12.04 でも同じ問題がありました。OpenCV のバージョンは 2.4.3 です。まったく同じ例で、Eclipse-Android バンドルを使用しています。

これが私がしたことです:

Google リポジトリを使用して NDK プラグインを更新します。既にインストールされていますが、更新できます。

次に、例のように直進するのではなく、size_t を int に変更し、temp 変数を追加しました。コードは次のとおりです。

Mat* pMatGr=(Mat*)addrGray;
Mat* pMatRgb=(Mat*)addrRgba;
vector<KeyPoint> v;
FastFeatureDetector detector(50);
detector.detect(*pMatGr, v);
for( int i = 0; i < v.size(); i++ )
{
     KeyPoint tK = v[i];
    circle(*pMatRgb, Point(tK.pt.x, tK.pt.y ), 10, Scalar(255,0,0,255));
}

これは本当に奇妙なバグです。私の推測では、Eclipse のデバッグ メカニズムが正しく機能していないことに関係があると思われます。

于 2012-11-22T16:03:07.157 に答える
1

ええ、非常に奇妙なバグです。Ubuntu 12.04 と OpenCV 2.4.5 を使用しています。

「OpenCV チュートリアル 2 - 混合処理」で同じバグが発生しました

EclipseまたはNDKを再インストールせずに修正できました。サンプルプロジェクトを削除してから、再度インポートしました。今は正常に動作します。

于 2013-07-03T04:21:44.487 に答える