2011-06-29 18 views
6

Actualmente estoy siguiendo este tutorial (http://www.stanford.edu/class/ee368/Android/Tutorial-2-OpenCV-for-Android-Setup-Windows.pdf) sobre cómo configura OpenCV para Android en Windows y tengo algunos errores que no entiendo. Básicamente, en el paso 3.c, cuando compilo las bibliotecas de OpenCV en Cygwin usando el comando "make", obtengo estos errores;Errores de compilación de OpenCV/Android

/home/Ralph/opencv/modules/legacy/src/calibfilter.cpp: In member function `virtual bool CvCalibFilter::SaveCameraParams(const char*)': 
/home/Ralph/opencv/modules/legacy/src/calibfilter.cpp:693: error: `struct CvStereoCamera' has no member named `quad' 
/home/Ralph/opencv/modules/legacy/src/calibfilter.cpp:694: error: `struct CvStereoCamera' has no member named `quad' 
/home/Ralph/opencv/modules/legacy/src/calibfilter.cpp: In member function `virtual bool CvCalibFilter::LoadCameraParams(const char*)': 
/home/Ralph/opencv/modules/legacy/src/calibfilter.cpp:749: error: `struct CvStereoCamera' has no member named `quad' 
/home/Ralph/opencv/modules/legacy/src/calibfilter.cpp:750: error: `struct CvStereoCamera' has no member named `quad' 
make[2]: *** [modules/legacy/CMakeFiles/opencv_legacy.dir/src/calibfilter.o] Error 1 
make[1]: *** [modules/legacy/CMakeFiles/opencv_legacy.dir/all] Error 2 
make: *** [all] Error 2 

Gracias por su ayuda de antemano,

Ralph.

+0

¿Puedes limpiar el formato un poco por favor? – demongolem

Respuesta

0

La instalación de OpenCV en Windows es fácil.

Siga estos pasos.

http://www.developerstation.org/2011/02/using-opencv-21-on-visual-studio-2008.html

El enlace que has mencionado no utiliza el NDK oficial con el apoyo de Google. He tenido problemas para configurar y trabajar con ndk4 en el pasado.

Si trabajar o no trabajar con ndk4 no le importa, los enlaces oficiales (con NDK 5) funcionan muy bien. Pruébalos. En su mayoría son los mismos pasos.

http://opencv.itseez.com/doc/tutorials/introduction/android_binary_package/android_binary_package.html

http://opencv.itseez.com/doc/tutorials/introduction/android_binary_package/android_binary_package_using_with_NDK.html

3

me he encontrado con el mismo problema. Mirando hacia /home/Ralph/opencv/modules/legacy/include/opencv2/legacy/legacy.hpp, la definición struct es:

typedef struct CvStereoCamera 
{ 
    CvCamera* camera[2]; /* two individual camera parameters */ 
    float fundMatr[9]; /* fundamental matrix */ 

    /* New part for stereo */ 
    CvPoint3D32f epipole[2]; 
    CvPoint2D32f quad[2][4]; /* coordinates of destination quadrangle after 
           epipolar geometry rectification */ 
    double coeffs[2][3][3];/* coefficients for transformation */ 
    CvPoint2D32f border[2][4]; 
    CvSize warpSize; 
    CvStereoLineCoeff* lineCoeffs; 
    int needSwapCameras;/* flag set to 1 if need to swap cameras for good reconstruction */ 
    float rotMatrix[9]; 
    float transVector[3]; 
} CvStereoCamera; 

estoy completamente desconcertado en cuanto a por qué entonces no parece funcionar: quad se define allí mismo.

Por comentar todas las líneas en calibfilter.cpp y epilines.cpp que hacen referencia al atributo quad, he conseguido OpenCV al menos compilar, pero esto se ha roto, sin duda, el soporte de la cámara estéreo.

+0

Estos problemas parecen ser síntomas de varios problemas al compilar OpenCV en Windows. Intenté hacerlo a través de Cygwin y MingW, ambos con varios grados de falla. Finalmente me di por vencido y lo compilé en Ubuntu. No podré crear un ejecutable de Windows, pero eso no es un problema para mí. –

6

Hay un "#undef quad" en la parte superior de ambos calibfilter.cpp y epilines.cpp. Si hago un comentario sobre estos undefs, tiene éxito en la compilación.

Por mi vida no puedo entender por qué hay undef allí ... tal vez el orden de las importaciones es incorrecto o algo así.

0

Como @Matthew Hemke escribió que #undef es el culpable. Lo cual es extraño porque el código compila bien, como en Ubuntu, pero cuando me enfrenté al error similar de 'No miembro Quad', mientras compilaba OpenCV bajo Cygwin (en windows-7). Seguro que aquí falta algo fundamental.

Cuestiones relacionadas