Как пересобрать OpenCv с помощью C++_static?

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

APP_STL:=gnustl_static

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

APP_STL:=c++_staticкак предложено андроид студией.

Сборка прошла успешно, и я успешно выполнил проект. Теперь я попытался реализовать обнаружение лица с помощью 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 ответ

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

CMake -GNinja -DINSTALL_ANDROID_EXAMPLES=ON -DANDROID_EXAMPLES_WITH_LIBS=ON -DBUILD_EXAMPLES=ON -DBUILD_DOCS=OFF -DWITH_OPENCL=OFF -DWITH_IPP=ON -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake -DANDROID_TOOLCHAIN ​​= лязг "-DANDROID_STL= C++_static" -DANDROID_ABI=x86 -DANDROID_SDK_TARGET=18 ../opencv

С последующим

make && make install

Другие вопросы по тегам