Захват андроид камеры с помощью VideoCapture в OpenCV2.3.1 - PullRequest
2 голосов
/ 05 января 2012

Я пытаюсь использовать VideoCapture в своем родном приложении OpenCV.Для создания своего приложения я следовал инструкциям, выпущенным с выпуском OpenCV2.3.1, поэтому у меня есть файл Android.mk для сборки моего приложения и Builder в eclipse, чтобы сделать это непосредственно из eclipse.Все работает нормально, компилируя и связывая другие модули openCV, но когда я использую VideoCapture, я получаю ошибку компоновки, например:

SharedLibrary: liblivecamera.so C: / Development / android-opencv-wsp / VideoCamLibAndroid_v0.1 / obj / local / armeabi-v7a / libopencv_highgui.a (cap_android.o): в функции CvCapture_Android::convertYUV2BGR(int, int, unsigned char const*, cv::Mat&, bool, bool)': cap_android.cpp: (.text._ZN17CvCapture_Android14convertYUV2BGREiiPKhRN2cv3MatEbb *+0x1c6): undefined reference to cv :: cvtColor (cv :: _ InputArray const &, cv :: _ OutputArray const &, int, int) 'cap_android.cpp: (.text._ZN17CvCapture_Android14convertYUV2BGREiiPKhRN2cv3MatEbb + 0x1f8): неопределенная ссылка на `cv :: cvtColor (cv :: _ InputArray const &, cv :: _ OutputArray const &, int, int) 100 возвратила 1: int, int) '1006 * [/ cygdrive / c / Development / android-opencv-wsp / VideoCamLibAndroid_v0.1 / obj / local / armeabi-v7a / liblivecamera.so] Ошибка 1 *

Если я использую opencv2.3.0Я могу заставить его работать (компилирование с CMake), но мне действительно нужно использовать OCV2.3.1 и его новую функциональность.

Кто-нибудь успешно использовал модуль VideoCapture с OpenCV2.3.1?

1 Ответ

2 голосов
/ 25 февраля 2012

У меня была точно такая же проблема, и после нескольких часов ударившись головой о стену, я наконец нашел решение!

Видимо, в OpenCV.mk, поставляемом с OpenCV 2.3.1, есть ошибка.

Следующая строка:

OPENCV_MODULES := contrib calib3d objdetect features2d video imgproc highgui ml legacy flann core

Должна быть заменена на:

OPENCV_MODULES := contrib legacy objdetect calib3d features2d video highgui ml imgproc flann core

Выглядит очень похожено есть небольшая разница, если вы посмотрите на порядок модулей.

Вы можете понять логику этого изменения, взглянув на файл OpenCVConfig.cmake, который гласит: #libraries order is very important because linker from Android NDK is one-pass linker

Если это так важно, почему его не включили в оригинал OpenCV.mk ?????

...