2012-07-27 10 views
5

Ich habe OpenCV-Projekt für Android heruntergeladen und die Beispielprojekte, die mit ihm kam, enthält mehrere Fehler .... Nur die Projekte, die den NDK-Code enthalten, hat die Fehler .... das Problem ist, dass der C++ Code viele Fehler zeigt ... die Schlüsselwörter wie jstring werden nicht erkannt .. Bitte helfen Sie mir, dieses Problem zu beheben ... Sie im Voraus für Ihre wertvolle Zeit deinnkeningOpenCV für Android-Beispielprogramme mit Fehler

#include <jni.h> 
#include <opencv2/core/core.hpp> 
#include <opencv2/imgproc/imgproc.hpp> 
#include <opencv2/features2d/features2d.hpp> 
#include <vector> 

using namespace std; 
using namespace cv; 

extern "C" { 
JNIEXPORT void JNICALL Java_org_opencv_samples_tutorial3_Sample3View_FindFeatures(JNIEnv* env, jobject, jint width, jint height, jbyteArray yuv, jintArray bgra) 
{ 
    jbyte* _yuv = env->GetByteArrayElements(yuv, 0); 
    jint* _bgra = env->GetIntArrayElements(bgra, 0); 

    Mat myuv(height + height/2, width, CV_8UC1, (unsigned char *)_yuv); 
    Mat mbgra(height, width, CV_8UC4, (unsigned char *)_bgra); 
    Mat mgray(height, width, CV_8UC1, (unsigned char *)_yuv); 

    //Please make attention about BGRA byte order 
    //ARGB stored in java as int array becomes BGRA at native level 
    cvtColor(myuv, mbgra, CV_YUV420sp2BGR, 4); 

    vector<KeyPoint> v; 

    FastFeatureDetector detector(50); 
    detector.detect(mgray, v); 
    for(size_t i = 0; i < v.size(); i++) 
     circle(mbgra, Point(v[i].pt.x, v[i].pt.y), 10, Scalar(0,0,255,255)); 

    env->ReleaseIntArrayElements(bgra, _bgra, 0); 
    env->ReleaseByteArrayElements(yuv, _yuv, 0); 
} 

} 

Fehler ..

Unresolved inclusion: <vector> 
Symbol 'std' could not be resolved 
+0

Sie sollten die Fehlermeldungen schreiben und den Code, den sie zu entsprechen. – Michael

+0

@Michael ... bitte sehen Sie die Änderungen .. –

+0

Verwenden Sie Eclipse? Wenn ja, hast du folgendes versucht: http://stackoverflow.com/questions/9375708/eclipse-indexer-errors-when-stl-with-android-ndk? – Michael

Antwort

0

hatte ich das gleiche Problem und konnte begegnet diese und andere Fehler beheben, während die OpenCV Tutorial folgenden, indem Sie die folgenden Angaben enthalten Pfade mit:

${NDKROOT}/platforms/android-9/arch-arm/usr/include 
${ProjDirPath}/../../sdk/native/jni/include 
${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi-v7a/include 
${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.4.3/include 
4

@ Antwort Nolans gefolgt von @ Michaels Kommentar es für mich gelöst . Hier sind die kombinierten Schritte:

  1. In Eclipse direkt auf Ihrem Projekt klicken, und wählen Sie Eigenschaften (Diese auf einem Mac ist btw)
  2. erweitern C/C++ Allgemeine
  3. Wählen Pfade und Symbole
  4. Unter SprachenGNU C++ wählen
  5. die folgende Leistungen enthält Fügen Sie Verzeichnisse unter sollte definiert werden

    ${NDKROOT}/platforms/android-9/arch-arm/usr/include 
    ${ProjDirPath}/../../sdk/native/jni/include 
    ${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi-v7a/include 
    ${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.4.3/include 
    
  6. Stellen Sie sicher, $ {} NDKROOT als Umgebungsvariable definiert ist. Ist dies nicht der voran gehen und fügen Sie es unter C/C++ Bauen - Umwelt

  7. nun voran gehen und den Index mit der rechten Maustaste auf Ihr Projekt neu erstellen und Index wählen - Rebuild

Beifall.