opencv jni Android 实例笔记
看起来不错,c++调用的:
opencv4版本,本机 NDKTest-master.zip
GitHub - zyongLiu/NDKTest: android JNI Test,use OpenCV default
ncnn opencv3 enet融合例子:
https://github.com/watersink/enet-as-linux
java_opencv4.so方式,还有.a方式调用,
迁移到自己的项目不成功
OpenCVDemo/app/src/main/libs/arm64-v8a at main · GenialSir/OpenCVDemo · GitHub
这个项目548m,sdk的方式提供
GitHub - sohyeong-dev/OpenCV-JNI-Example: OpenCV JNI Example
项目中有ncnn,加opencv编译报错了
NDK工程使用ncnn vulkan包提示需要frtti、fexceptions
这两天弄一个工程,是在安卓端部署ncnn with vulkan的项目
一般来说都会用到 try catch 或者 有些库需要用到typeid
一般的方法是在build.gradle里面加上
-
externalNativeBuild {
-
cmake {
-
cppFlags '-std=c++11 -frtti -fexceptions'
-
abiFilters "armeabi-v7a", "arm64-v8a"
-
}
-
}
这个网上很多我就不具体说了,但是我发现我的工程即使加了这个也还是用不了,一开始以为是自己的设置啥的有问题,后来发现只要cmake里加了ncnn就会出这个问题,因此我就认真的读了ncnn里的cmake文件一般路径为:
ncnn-xxxxxx-android-vulkan\arm64-v8a\lib\cmake\ncnn\ncnn.cmake
于是在大概57行的位置我发现了这个:
-
set_target_properties(ncnn PROPERTIES
-
INTERFACE_COMPILE_OPTIONS "-fno-rtti;-fno-exceptions"
-
INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include/ncnn"
-
INTERFACE_LINK_LIBRARIES "-fopenmp;-static-openmp;Threads::Threads;Vulkan::Vulkan;\$<LINK_ONLY:glslang>;\$<LINK_ONLY:SPIRV>;android;jnigraphics;log"
-
INTERFACE_POSITION_INDEPENDENT_CODE "ON"
-
)
好的罪魁祸首就是他了,只要把-fno-rtti;-fno-exceptions 改成 -frtti;-fexceptions就可以了。
不过我得声明一下我也是个小白哈,具体这么改了之后对ncnn的运行性能有什么影响我没有测,如果有大佬知道更好的解决办法希望能告诉我一下,我实在是没有别的办法了
原文链接:https://blog.csdn.net/fiendwbc/article/details/118976134
这个改完之后,ncnn报错了:
CMakeFiles/yolov5ncnn.dir/yolov5ncnn_jni.cpp.o:yolov5ncnn_jni.cpp:typeinfo for YoloV5Focus: error: undefined reference to 'typeinfo for ncnn::Layer'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
无效方法:
六、修改app/build.gradle下, defaultConfig里面加入下面的代码
externalNativeBuild {
cmake {
arguments "-DANDROID_TOOLCHAIN=clang"
cFlags "-fopenmp -O2 -fvisibility=hidden -fomit-frame-pointer -fstrict-aliasing -ffunction-sections -fdata-sections -ffast-math "
cppFlags "-fopenmp -O2 -fvisibility=hidden -fvisibility-inlines-hidden -fomit-frame-pointer -fstrict-aliasing -ffunction-sections -fdata-sections -ffast-math "
arguments "-DANDROID_STL=c++_shared", "-DANDROID_CPP_FEATURES=rtti exceptions"
cppFlags ""
cppFlags "-std=c++14"
cppFlags "-frtti"
cppFlags "-fexceptions"
}
}
文章来源: blog.csdn.net,作者:AI视觉网奇,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/jacke121/article/details/123244291
- 点赞
- 收藏
- 关注作者
评论(0)