完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
NCNN默认支持Android和iOS,使用Android NDK编译时会自动定义__ARM_NEON宏,从而获得较高的处理性能。在RK3288 Ubuntu Linux系统上编译时,默认是不开启__ARM_NEON宏的,虽然也能编译过,但是其性能却比Android系统低了一倍。
因此,要对NCNN做如下修改才能获得和Android一样的运行效果: 1、在顶层目录的CMakelist.txt文件中增加如下语句,强制打开宏__ARM_NEON: add_definitions(-D__ARM_NEON) add_definitions("-mfloat-abi=hard -mfpu=neon") 2、按如下方式修改src/CMakeLists.txt: if(TURE OR (ANDROID AND ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "armv7-a")) 即强制进入ARM平台分支编译,否则会编译X86平台对应的C程序。 3、在RK3288的Linux系统上按照软件包: sudo apt-get install gcc-multilib g++-multilib 如果不安装此包,则会报告错误:/usr/include/c++/5/string:38:28: fatal error: bits/c++config.h: No such file or directory 特别说明: RK3288 Ubuntu系统默认的浮点数格式hard,所以上面要用参数-mfloat-abi=hard 但是对于安卓或者不支持hard模式的处理器,应该定义参数-mfloat-abi=softfp(NCNN的README.md文档中提到的3519处理器就是这样) 如果这两个参数不一致,那么虽然编译能通过,但是程序运行时就会报出找不到文件的错误,比如:./mtcnn: error while loading shared libraries: libopencv_highgui.so.2.4: cannot open shared object file: No such file or directory。我解决这个错误花了较长时间,它产生的原因就是:mtcnn程序使用“-mfloat-abi=softfp -mfpu=neon”编译,而安装的libopencv-dev软件包却默认采用-mfloat-abi=hard编译。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于米尔瑞芯微RK3576核心板/开发板的人脸疲劳检测应用方案
892 浏览 0 评论
1101 浏览 1 评论
920 浏览 1 评论
2148 浏览 1 评论
3441 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 03:03 , Processed in 1.183248 second(s), Total 74, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号