opencv jni Android 实例笔记
opencv和ncnn编译冲突,这个项目的opencv能兼容ncnn,解决了这个冲突:
这个有ncnn opencv yolov5融合的例子:
https://github.com/cmdbug/YOLOv5_NCNN
自己移植opencv时,运行报找不到的错误,解决方法:
dlopen failed: library “libopencv_java4.so“ not found 解决_jacke121的专栏-CSDN博客
缺点:不知道yolov5是哪个版本
ncnn支持yolov5 v6
GitHub - ttjjmm/yolov5_deploy: ncnn deployment for yolov5-v6.0
缺点:不是jni的
ncnn win10 gpu:
pc_win10_x64安装ncnn,并使用vulkan_kai1001的专栏-CSDN博客_ncnn vulkan
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 PROPERTIESINTERFACE_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"
}
}
opencv jni Android 实例笔记相关推荐
- Android开发笔记(序)写在前面的目录
知识点分类 一方面写写自己走过的弯路掉进去的坑,避免以后再犯:另一方面希望通过分享自己的经验教训,与网友互相切磋,从而去芜存菁进一步提升自己的水平.因此博主就想,入门的东西咱就不写了,人不能老停留在入 ...
- Android开发笔记(序)
本开发笔记,借鉴与其他开发者整理的文章范例与心得体会.在这里作为开发过程中的一个总结与笔记式记录. 如有侵犯作者权益,请及时联系告知删除.俗话说:集百家成一言,去粕成金. ************** ...
- Android开发笔记(序)写在前面的目录大全
转自 湖前琴亭 的博客https://blog.csdn.net/aqi00/article/details/50012511 知识点分类 一方面写写自己走过的弯路掉进去的坑,避免以后再犯:另一方面 ...
- Andriod开发之二十:Android开发笔记(序)写在前面的目录
https://blog.csdn.net/aqi00/article/details/50038385 知识点分类 一方面写写自己走过的弯路掉进去的坑,避免以后再犯:另一方面希望通过分享自己的经验教 ...
- Android studio 下 JNI 开发实例
在AS中进行 NDK 开发之前,我们先来简单的介绍几个大家都容易搞懵的概念: 到底什么是JNI,什么是NDK? 何为"交叉编译"? 先看什么是 JNI?JNI 的全称就是 Java ...
- Android实例剖析笔记(四)
摘要:分析NoteEditor这个类和以及Content Provider机制 NoteEditor深入分析 首先来弄清楚"日志编辑"的状态转换,通过上篇文章的方法来做下面这样一个 ...
- Android JNI简单实例(android 调用C/C++代码)
转载自 xiechengfa 最终编辑 xiechengfa Android JNI简单实例关键字: android.jni Android的jni实例 android 的应用程序(Dalvik VM ...
- Android开发笔记(六十九)JNI实战
NDK NDK的用途 NDK全称为Native Development Kit,意即原生的开发工具,NDK允许开发者在APP中通过C/C++代码执行部分程序.它是Android提供的方便开发者通过JN ...
- opencv的android.mk,android-opencv 版本下JNI Android.mk文件的书写
不能利用 include $(all-subdir-makefiles) 会报重复引用的错误. AndroidNDK:Tryingto define local module ...opencv. 故 ...
最新文章
- LeetCode 406. 根据身高重建队列
- 解锁三星bl锁有几种方法_三星S6解锁教程_三星GALAXY S6怎么解锁Bootloader的方法
- Web前端基础——HTML
- DNN出错:The compiler failed with error code 1.
- 验证java 递增不是原子操作
- 当你在应用机器学习时你应该想什么
- GCD HDU - 1695
- 宝塔 windows 2012 配置 ftp 允许 fileZilla 连接
- C++_类和对象_C++多态_多态案例1-计算器类_抽象父类---C++语言工作笔记071
- java中equals以及==的用法(简单介绍)
- QT 中QComboBox控件鼠标事件过滤
- Android OpenCV(六十二):伪彩色增强
- 用css 添加手状样式,鼠标移上去变小手
- 【蓝桥杯每日一练:蹩脚两轮车】
- 2020.2.4记账
- 微信小程序的表格table
- 斯泰因梅茨-电路向量法的创始人
- adonis.js mysql_专注于易用性与速度的Nodejs Web和微服务框架——Adonis
- 玩转小程序下篇--履带式行走
- 在万彩手影大师上怎么制作微课_制作微课最简单方便的设备?