如何使用c ++ _ static重建OpenCv?

时间:2018-10-19 05:51:29

标签: 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

但是我不知道这样做。 请帮助

1 个答案:

答案 0 :(得分: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 = c语“ -DANDROID_STL = c ++ _ static” -DANDROID_ABI = x86 -DANDROID_SDK_TARGET = 18 ../ opencv

其次是

  

进行&&进行安装