cmake构建NNIE工程
cmake构建NNIE工程
《cmake构建NNIE工程》
利用海思芯片在摄像头端做模型推理是大势所趋,本文介绍了笔者在做 NNIE 开发的过程中使用 cmake 构建 NNIE 工程的过程,因为一直使用 CLion 进行C++开发,所以 IDEA 党应该会很感兴趣,同时介绍了使用 NNIE 时候需要依赖哪些库,然后推广一下笔者结合一个大神的 NNIE 代码开源的用 C++ 进行NNIE开发的项目,让使用 NNIE 像使用 ncnn 一样简单。
Key Words:NNIE、cmake、OpenCV
Beijing, 2020
作者:RaySue
Code:https://github.com/RaySue/NNIE-lite
Agile Pioneer
这里算是对项目中的CMakeLists.txt的一个解读吧,高手直接去看项目的 CMakeLists.txt 即可
NNIE依赖
实验环境介绍:
- Hi3516CV500_SDK_V2.0.0.3
- OpenCV 3.4.1
- 32bit 的交叉编译工具
设置交叉编译工具链
在设置交叉编译工具链前,要先对交叉编译工具进行安装。
交叉编译工具链安装步骤:
- 解压 arm-himix200-linux.tgz
- make -p abs_dir
- source ./arm-himix200-linux.install abs_dir
- 上述程序会把PATH变量加入到 /etc/profile 中,reboot,CLion 编译器即可交叉编译
SET(CMAKE_C_COMPILER arm-himix200-linux-gcc)
SET(CMAKE_CXX_COMPILER arm-himix200-linux-g++)
SET(CMAKE_C_STRIP arm-himix200-linux-strip)
设置 FLAGS
这些 FLAGS 对编译来说是必要的。
SET(CMAKE_C_FLAGS_PUBLIC "-mcpu=cortex-a7 -mfloat-abi=softfp -mfpu=neon-vfpv4 -ffunction-sections -mno-unaligned-access -fno-aggressive-loop-optimizations -mapcs-frame -rdynamic")
SET(CMAKE_C_FLAGS_DEBUG "-Wall -ggdb3 -DNM_DEBUG ${CMAKE_C_FLAGS_PUBLIC}")
SET(CMAKE_C_FLAGS_RELEASE "-Wall -O3 ${CMAKE_C_FLAGS_PUBLIC}")
NNIE 依赖
头文件参见 https://github.com/RaySue/NNIE-lite 的 hisi/include 文件夹
必要的库文件如下,顺序不要改
SET(HI_LIBS _hiawb.a _hiae.a _hidehaze.a upvqe.a dnvqe.a md.a _hildci.a _hidrc.a securec.a nnie.a ive.a tde.a VoiceEngine.a isp.a)
OpenCV 移植
OpenCV 交叉编译这个步骤坑不是很多,之前编译过一个 OpenCV4 的版本,导致在摄像头没法用,所以就换了 3.4.1 用的就很顺畅,所以版本尽量不要尝试了,就用本文推荐的吧。
参考中给出了几个交叉编译 OpenCV 的帖子,照着第一个来就行。
OpenCV 交叉编译要点:
- sudo apt-get install cmake
- sudo apt-get install cmake-gui
- export LC_ALL=C
- 按照参考博客中 修改各个文件 的内容
- cmake-gui …
- 选择 configure -> Specify options for cross-comiling -> next
- CMAKE_EXE_LINKER_FLAGS -lstdc++ -lpthread -lm -ldl
Q&A
Q1: Assertion `cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))’ failed.
A1: export LC_ALL=C; CLion用户 setting-Build -> Execution -> Deployment-CMake-Environment: LC_ALL=C
Q2: 交叉编译后的 OpenCV 无法使用,读不了图,无法 resize 等
A2: 换个 OpenCV 版本重新编译
参考
https://www.cnblogs.com/chay/p/10384942.html#_label2
https://blog.csdn.net/SMF0504/article/details/105305190/
https://www.jianshu.com/p/9fc9be4f08eb
cmake构建NNIE工程相关推荐
- 【笔记】CMake构建C++工程
一句话结论:本文归纳CMake构建c++工程的基本用法,实现多依赖.多工程.多文件格式的工程编译构建. 1.简介 CMake(cross-platform make)是一个跨平台编译工具,它不能直接生 ...
- C++11标准|用C++写一个矩阵(包含了如何用cmake构建一个工程)
如何用cmake构建一个工程? 构建一个工程的时候,需要做的几件事情(如果下面几件事你知道怎么做了,多大的工程就都不是问题了): 1.源代码在什么位置? 2.头文件在哪里? 3.怎么生成静态或者动态库 ...
- vs2017 cmake android,CMake构建VS2017工程
1 安装VS2017/cmake 2 工程开发 3 生成VS2017工程 4 参考资料 1 安装VS2017/cmake 软件安装: Visual Studio官网下载Visual Studio Co ...
- linux cmake 编译项目,使用CMake构建复杂工程
0. 什么是CMake CMake是一个跨平台的编译.安装.测试以及打包工具:CMake不直接编译软件,而是结合原生构建系统来构建软件.CMake配置文件是CMakeList.txt文件(每个源码文件 ...
- 用CMake构建工程时 cmake -G“Unix Makefiles“ 的使用
在Windows上使用CMake构建项目出现了很多错误,搜索了很多资料尝试改了很多地方始终没能找到与我类似的情况,一度让我以为是系统问题.今天发现就一句,是没用cmake -G"Unix M ...
- 【使用CMake组织C++工程】2:CMake 常用命令和变量
前言 前面的文章介绍了一个最简单的CMake工程,这篇文章将介绍一个稍微复杂一些的CMake工程,结合这个工程总结一下在组织一个C/C++工程时最为常用的一些CMake命令和变量.对于涉及到的命令和变 ...
- QtCreator使用CMake构建项目时jom Error 2问题
QtCreator使用MSVC编译环境构建项目时,会因为配置不正确出现jom: C:/-/- [cmTC_fe41e\fast] Error 2错误,这里记录一下我的解决办法和对此问题的理解,希望能帮 ...
- CMake命令大全——CMake构建系统的骨架
转自:http://www.cnblogs.com/coderfenghc/archive/2012/06/16/CMake_ch_01.html#2996205) CMD#1: add_custom ...
- 使用maven构建Spring工程的一些重点
2019独角兽企业重金招聘Python工程师标准>>> 有人喜欢把一个下载的spring3.1和struts1.3下载包里的的lib目录下所有的jar不管三七二十一全部cop ...
最新文章
- UML建模--序列图建模技巧
- ubuntu声音太小的解决方案
- Azure WAF 导致网站无法登录 AAD 的解决办法
- [Golang]slice的用法以及和数组的区别
- ERROR! The server quit without updating PID file (/usr/local/var/mysql/apple,卸载,重装一个,我的方案
- 剑指Offer_47_求1+2+3+...+n
- tableau三轴该怎么做_举个栗子!Tableau技巧(30):巧妙实现 双柱图 和 折线图 的组合图表...
- YUV420及YUV422格式的采集存储方式
- 计算机病毒的命名规则
- 计算机桌面文件删除不掉是怎么了,如何解决电脑桌面文件无法删除问题
- php 设置字符编码为utf-8
- DX11梯台旋转运动
- 蛋白质翻译后修饰分析简介
- 谷歌 draco学习 二 压缩点信息
- pytorch复现RRU-Net
- 阿里云迁移工具推荐最佳实践:KVM虚拟化迁移到阿里云
- 教你如何一键批量删除空间说说
- 边缘计算的100个术语
- html侧边导航栏跟随页面滚动,javascript练习:导航随内容滚动而跟随变化
- 计算机编程逻辑图,【图片】【附C++编程演示】计算机思维生成之逻辑编程篇【人工智能吧】_百度贴吧...