Ошибки компиляции OpenCV / Android - PullRequest
6 голосов
/ 29 июня 2011

В настоящее время я следую этому руководству (http://www.stanford.edu/class/ee368/Android/Tutorial-2-OpenCV-for-Android-Setup-Windows.pdf) о том, как настроить OpenCV для Android в Windows, и у меня возникают некоторые ошибки, которые я не понимаю. В основном, на шаге 3.c, когда я компилирую библиотеки OpenCVв Cygwin, используя команду «make», я получаю эти ошибки:

/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 

Заранее благодарю за помощь,

Ralph.

Ответы [ 4 ]

6 голосов
/ 13 января 2012

В верхней части файла calibfilter.cpp и epilines.cpp есть «#undef quad». Если я закомментирую эти undefs, он успешно скомпилируется.

Из-за своей жизни я не могу понять, почему там есть неопределённость ... возможно, порядок импорта неправильный или что-то в этом роде.

3 голосов
/ 29 ноября 2011

Я столкнулся с той же проблемой.Глядя на /home/Ralph/opencv/modules/legacy/include/opencv2/legacy/legacy.hpp, определение структуры выглядит следующим образом:

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;

Я полностью озадачен тем, почему он тогда не работает: quad определено прямо здесь.

Комментируя все строки в calibfilter.cpp и epilines.cpp, которые ссылаются на атрибут quad, мне удалось, по крайней мере, компилировать OpenCV, но это, несомненно, нарушило поддержку стереокамеры.

0 голосов
/ 19 февраля 2012

Как писал @Matthew Hemke, виновником является #undef. Что странно, потому что код прекрасно компилируется, как и в Ubuntu, но когда я столкнулся с похожей ошибкой 'No member Quad' при компиляции OpenCV под Cygwin (на windows-7). Здесь наверняка чего-то не хватает.

0 голосов
/ 24 октября 2011

Установить OpenCV в Windows очень просто.

Выполните следующие действия.

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

Ссылка, которую вы упомянули, не использует официальный NDK, поддерживаемый Google.В прошлом у меня были проблемы с настройкой и работой с ndk4.

Если для вас не важно работать или не работать с ndk4, официальные ссылки (с NDK 5) работают нормально.Дай им попробовать.Это в основном одни и те же шаги.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...