2012-07-27 12 views
5

He descargado el proyecto OpenCV para Android y los proyectos de ejemplo que vienen con él contienen varios errores .... Solo los proyectos que contienen el código NDK tienen los errores .... el problema es que el código C++ muestra muchos errores ... las palabras clave como jstring no se reconocen .. ponerse en ayudar a resolver este problema ... Agradeciendo de antemano su valioso tiempoOpenCV para programas de ejemplo de Android que muestran el error

#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); 
} 

} 

errores ..

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

Debería publicar los mensajes de error y el código al que corresponden. – Michael

+0

@Michael ... vea las ediciones .. –

+0

¿Está utilizando Eclipse? Si es así, ¿has probado esto: http://stackoverflow.com/questions/9375708/eclipse-indexer-errors-when-using-stl-with-android-ndk? – Michael

Respuesta

0

que tenían el mismo problema y fue capaz de resolver estos y otros errores encontrados al siguiendo el tutorial OpenCV mediante el uso de las siguientes rutas INCLUDE:

${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

@ respuesta de Nolan seguido de @ comentarios de Michael lo resolvió para mí . Estos son los pasos combinados:

  1. En Eclipse, haga clic derecho sobre el proyecto y seleccione Propiedades (Esto es en un Mac por cierto)
  2. Expand C/C++ general
  3. Seleccionar Caminos y símbolos
  4. Bajo Idiomas seleccione GNU C++
  5. A continuación se incluye deben definirse en función Incluir directorios

    ${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. Asegúrese de que las NDKROOT $ {} se define como una variable de entorno. Si no a seguir adelante y poner bajo C/C++ Build - Medio Ambiente

  7. Ahora seguir adelante y reconstruir el índice haciendo clic derecho sobre su proyecto y seleccione Índice - Reconstruir

Saludos.