【问题标题】:How to rebuild OpenCv with c++_static?如何用 c++_static 重建 OpenCv?
【发布时间】:2018-10-19 05:51:28
【问题描述】:

我是 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

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

【问题讨论】:

标签: android opencv android-ndk opencv4android


【解决方案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

紧随其后

制作 && 制作安装

【讨论】:

  • 在 windows > 在 opencv sdk 文件夹中 > 运行上述命令 > CMake 错误:源目录“E:/OpenCV-android-sdk”似乎不包含 CMakeLists.txt。
  • OpenCV-android-sdk 是这个命令的输出。需要使用opencv源代码github.com/opencv/opencv运行脚本
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-06-12
  • 1970-01-01
  • 1970-01-01
  • 2022-01-07
  • 2020-10-07
  • 1970-01-01
  • 2020-11-03
相关资源
最近更新 更多