Как пересобрать OpenCv с помощью c ++ _ static? - PullRequest
0 голосов
/ 19 октября 2018

Я новичок в opencv в Android.Я успешно импортировал модуль opencv 3.4.2.В application.mk

APP_STL:=gnustl_static

Когда я пытался собрать приложение, я получил ошибку сборки NDK, из-за которой 'gnustl_static' больше не поддерживается.Я изменил приведенную выше строку в application.mk на

APP_STL:=c++_static, как это было предложено в студии android.

Сборка прошла успешно, и я успешно запустил проект.Теперь я попытался реализовать обнаружение лица с помощью opencv, как в случае с opencv «распознавание лица».На этот раз я получил ошибку:

E:/MyOpenDetections/app/src/main/jni/com_sar_pahc_DetectionBasedTracker.cpp:37: error: undefined reference to 'cv::CascadeClassifier::detectMultiScale(cv::_InputArray const&, std::__ndk1::vector<cv::Rect_<int>, std::__ndk1::allocator<cv::Rect_<int> > >&, double, int, int, cv::Size_<int>, cv::Size_<int>)'

Я искал об этом и получил несколько предложений, что мне нужно изменить APP_STL на «gnustl_static» с «c ++ _ static», но когда я делаю это, NDK останавливаетсясборка и показывает, что она не поддерживается сейчас.

Я получил подсказку от Алекса Кона, что мне нужно пересобрать Opencv с помощью c ++ _ static OpenCV - неопределенная ссылка на 'cv :: CascadeClassifier :: detectMultiScale () после обновления NDK

Но я понятия не имею, как это сделать.Пожалуйста, помогите

1 Ответ

0 голосов
/ 19 октября 2018

Вы можете попробовать решение из системы отслеживания ошибок opencv ( источник ):

cmake -GNinja -DINSTALL_ANDROID_EXAMPLES = ON -DANDROID_EXAMPLES_WITH_LIBS = ON -DBUILD_EXAMPLES = ONWOCDILD = ONBD= OFF -DWITH_IPP = ON -DCMAKE_TOOLCHAIN_FILE = $ {ANDROID_NDK} /build/cmake/android.toolchain.cmake -DANDROID_TOOLCHAIN ​​= clang "-DANDROID_STL = c ++ _ static" -DANDROID_ABI = 18_DID_DID_D0_D0_D0D0_86-x86) x86*

Затем следует

make && make install

...