Как пересобрать 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