前言
ncnn 是腾讯为手机端开发的一款极致优化高性能神经网络前向计算框架。ncnn 从设计之初深刻考虑手机端的部署和使用。无第三方依赖,跨平台,手机端 cpu 的速度快于目前所有已知的开源框架。
最近在君正芯片上进行的人脸识别项目时,需要用 ncnn 来加载人脸检测模型,遂进行君正平台的 ncnn 交叉编译,本文意在记录整个交叉编译过程,如有不足之处,欢迎指正。
一、开发环境
编译环境:Ubuntu16.04 ( x64 )
交叉编译链:mips-gcc520-64bit
OpenCV库:OpenCV ( 3.4.1 )
Protobuf: protobuf( 3.2.0 )
交叉编译工具:CMake ( 3.5.1 ),若未安装,请在终端执行:
sudo apt-get install cmake
sudo apt-get install cmake-qt-gui
二、编译 OpenCV
下载 OpenCV 源文件
终端执行:
wget https://github.com/opencv/opencv/archive/3.4.1.zip
2.1 安装依赖库
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libtiff4-dev libswscale-dev libjasper-dev
2.2 新建 build 编译目录和编译存储库目录 install
解压下载 OpenCV 源文件
unzip 3.4.1.zip
mv 3.4.1 opencv
新建文件夹
cd opencv
mkdir build
mkdir install
2.3 运行 cmake-gui 配置 OpenCV 生成 Makefile
cd opencv/build
cmake-gui ..
2.3.1 配置源码路径和输出路径
Where is the source code 选择解压好的 opencv-3.4.1 根目录
where to build the binaries 选择新建的 build 目录
2.3.2 点击 configure 按钮进入配置向导
编译的是 mips 平台 OpenCV 库,所以我们选择 Unix Makefiles,接着选择 Specify options for cross-compiling。
2.3.3 配置交叉编译环境
点击 Next 进入交叉编译环境配置页面:
“Operating System”填写 mips-linux
“C Compilers” 填写交叉编译器(mips-linux-gnu-gcc)的路径
“C++ Compilers” 填写(mips-linux-gnu-g++)路径
“Target Root” 填写交叉编译器的 bin 目录,具体如下图:
修改 cmake-gui 配置
- 修该配置默认安装目录 /usr/local,调整为新建的目录 install 所在路径(注意调整为自己新建 install 的路径),具体如下:
CMAKE_INSTALL_PREFIX /home/yoko-zsb/opencv/install
-
修改 “BUILD” 栏目下的编译选项 BUILD_JPEG