android - 如何用 c++_static 重建 OpenCv?

标签 android opencv android-ndk opencv4android

我是 android 中 opencv 的新手。我成功导入了opencv模块3.4.2。 在application.mk中

APP_STL:=gnustl_static

当我尝试构建应用程序时,出现了 NDK 构建错误,指出“gnuSTL_static”不再受支持。我将 application.mk 中的上述行更改为

APP_STL:=c++_static 正如 android studio 所建议的那样。

构建成功,我成功运行了项目。现在我尝试用 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 - undefined reference to 'cv::CascadeClassifier::detectMultiScale() after NDK update

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

最佳答案

您可以尝试来自 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

紧随其后

make && make install

关于android - 如何用 c++_static 重建 OpenCv?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52886556/

相关文章:

Android Xamarin 使推送通知不创建新 Activity 而是使用当前 Activity

键盘关闭后Android操作栏消失

java - 如何在android中获取联系人计数和媒体卡计数?

java - 升级 Android Studio NDK : CMAKE_C_COMPILER and CMAKE_CXX_COMPILER not set 后出错

android - Ashmem 保留政策

android - 将 Google Maps API 实现到 Google Glass 时出错

具有不规则布局的 Android HDPI 设备

python - 将类型为 float64 的 np.array 转换为类型为 uint8 的缩放值

android - 方形检测增强

c++ - FAST 函数 OpenCV 调试断言失败