2

我是android中opencv的新手。我成功导入了opencv模块3.4.2。在应用程序.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 从“c++_static”更改为“gnustl_static”,但是当我这样做时,NDK 会停止构建并显示它现在不受支持。

我从 Alex Cohn 那里得到一些提示,我必须使用 c++_static OpenCV 重建 Opencv - NDK 更新后对 'cv::CascadeClassifier::detectMultiScale() 的未定义引用

但我不知道这样做。请帮忙

4

1 回答 1

1

您可以尝试来自 opencv bugtracker ( source ) 的解决方案:

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=clang "- DANDROID_STL=c++_static" -DANDROID_ABI=x86 -DANDROID_SDK_TARGET=18 ../opencv

其次是

制作 && 制作安装

于 2018-10-19T06:13:42.893 回答