2012-01-05 4 views
2

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

SharedLibrary: liblivecamera.so C:/Разработка/Android-OpenCV-WSP/VideoCamLibAndroid_v0. 1/объект/местные/ 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 сорте :: cvtColor (Cv :: _ InputArray сопзЬ & ЦВ :: _ OutputArray Const &, Int, Int)»cap_android. cpp: (.text._ZN17CvCapture_Android14convertYUV2BGREiiPKhRN2cv3MatEbb + 0x1f8): неопределенная ссылка на `cv :: cvtColor (cv :: _ InputArray const & ЦВ :: _ OutputArray Const &, Int, Int)»collect2: л.д. возвращается 1 Выход Статус Производитель: * [/ cygdrive/с/Разработка/андроида-OpenCV-WSP/ VideoCamLibAndroid_v0.1/объект/локальный/armeabi-v7a/liblivecamera.so] Ошибка 1 *

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

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

ответ

2

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

По-видимому, в 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 ?????

Смежные вопросы