如何在Android上使用dlib库运行自己的对象检测器?

时间:2019-05-22 09:41:52

标签: android c android-ndk

使用Windows 10。 我正在尝试运行自己的对象检测器模型,该模型使用dlib库进行了训练,并且可以完美地在python上运行。

`detector = dlib.simple_object_detector("mobiledatasetv2/detector.dat")
 image = cv2.imread("test.jpg")
 image = imutils.resize(image, width=500)
 rects = detector(image)
 for k, d in enumerate(rects):
 print("Detection {}: Left: {} Top: {} Right: {} Bottom: {}".format(k, 
 d.left(), d.top(), d.right(), d.bottom()))`

之后,我尝试在android上运行,因此我从此处“ https://github.com/tzutalin/dlib-android-app”下载示例项目,以检查如何在android上运行dlib。似乎android使用共享对象“ .so”文件,因此我尝试构建模型的共享对象文件。我从这里“ https://github.com/tzutalin/dlib-android”获得帮助来构建它。

我使用此命令来构建“ .so”文件     python build.py --jobs 1 --android_project C:\Users\dell\AppData\Local\Android\Sdk\ndk\sources\third_party\vulkan\src\build-android\jniLibs --debug

解决NDK,工具链和路径问题后

我坚持这个问题

  

C:/ Users / dell / AppData / Local / Android / Sdk / ndk-bundle / build //../ sources / cxx-stl / llvm-libc ++ / Android.mk:c++_static:   LOCAL_MODULE_FILENAME不得包含文件扩展名   C:/ Users / dell / AppData / Local / Android / Sdk / ndk-bundle / build //../ build / core / build-static-library.mk:26:   *** Android NDK:正在中止。停止。构建错误

我调试并发现LOCAL_MODULE_FILENAME文件为:libc ++ _ static.a,该文件存在于

  

AppData \ Local \ Android \ Sdk \ ndk-bundle \ sources \ cxx-stl \ llvm-libc ++ \ libs \ armeabi v7a此文件夹。

如果我删除libc ++ _ static.a文件扩展名,并且仅使其类似于libc ++ _ static,那么它将给出此错误

  

C:/ Users / dell / AppData / Local / Android / Sdk / ndk-bundle / build //../ build / core / prebuilt-library.mk:25:   *** Android NDK:断言失败:LOCAL_PREBUILT_SUFFIX未定义。停止。生成错误

如果我明确设定 LOCAL_PREBUILT_SUFFIX:= .a 然后错误来了

  

错误:C:/ Users / dell / AppData / Local / Android / Sdk / ndk-bundle / build //../ sources / cxx-stl / llvm-libc ++ / Android.mk:c++_static:   LOCAL_SRC_FILES应该指向以“ .a”结尾的Android NDK文件:   不支持以下文件:libs / armeabi-v7a / libc ++ _ static   C:/ Users / dell / AppData / Local / Android / Sdk / ndk-bundle / build //../ build / core / prebuilt-library.mk:41:   *** Android NDK:正在中止。停止。构建错误

0 个答案:

没有答案