前言

1.ubuntu环境 安装opencv4
2.安装g++,cmake,protobuf
3.安装并测试ncnn
4.cmake编译ncnn项目
5.qt编译器内编译ncnn项目

正文

因为ncnn库依赖 opencv 和 protobuf 因此你需要先配置好依赖环境再编译ncnn。

一、ubuntu环境 安装opencv4

方法1:如果你不需要指定opencv的版本 ,可以通过指令sudo apt install libopencv-dev 去下载opencv(讲道理可以,我没试过)
方法2:安装opencv4的教程参考链接:ubuntu环境 安装opencv4

二、安装g++,cmake,protobuf

sudo apt-get install build-essential
sudo apt-get install cmake 
sudo apt-get install autoconf automake libtool curl make g++ unzip
以下是安装protobuf的教程
git clone https://github.com/google/protobuf.git
cd protobuf
git submodule update --init --recursive
./autogen.sh$ ./configure
make
make check
sudo make install
sudo ldconfig           # refresh shared library cache.

查看protobuf版本自动检测
protoc --version

在开发板中 make check 遇到以下问题可以选择忽略

ncnn模型部署_深度学习

三、安装并测试ncnn

官方安装教程
腾讯开源 ncnn 码云官网3.1 下载依赖环境

sudo apt install build-essential git cmake libprotobuf-dev protobuf-compiler 
sudo apt install libvulkan-dev vulkan-utils (如果不编译vulkan可以不下)
sudo apt install libopencv-dev (如果上面已经下载了opencv指定版本这里不需要下载)

3.2 下载安装vulkan sdk (如果你的硬件设备支持GPU可以考虑下载vulkan)
要使用 Vulkan 后端,请安装 Vulkan 头文件、vulkan 驱动程序加载器、GLSL 到 SPIR-V 编译器和 vulkaninfo 工具。最好来自您的分发存储库。或者,从https://vulkan.lunarg.com/sdk/home下载并安装完整的 Vulkan SDK(大小约为 200MB;它包含所有头文件、文档和预构建的加载程序,以及一些额外的工具和所有内容的源代码)方法如下

wget https://sdk.lunarg.com/sdk/download/1.2.189.0/linux/vulkansdk-linux-x86_64-1.2.189.0.tar.gz?Human=true -O vulkansdk-linux-x86_64-1.2.189.0.tar.gz
tar -xf vulkansdk-linux-x86_64-1.2.189.0.tar.gz
export VULKAN_SDK=$(pwd)/1.2.189.0/x86_64

要在稍后构建 ncnn 后使用 Vulkan,还需要为 GPU 安装 Vulkan 驱动程序。

sudo apt install mesa-vulkan-drivers

3.2下载ncnn代码

git clone https://github.com/Tencent/ncnn.git
github上下载太慢,可换码云下载 ⬇
git clone https://gitee.com/Tencent/ncnn.git

cd ncnn
git submodule update --init

3.3 编译安装ncnn
如果你的电脑支持GPU你可以将VULKAN库编译进去 即-DNCNN_VULKAN=ON

mkdir -p build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DNCNN_VULKAN=OFF -DNCNN_BUILD_EXAMPLES=ON ..
make -j4
sudo make install
sudo ldconfig

如果你是为开发板交叉编译ncnn 你可以需要修改cmake
如cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/aarch64-linux-gnu.toolchain.cmake -DCMAKE_BUILD_TYPE=Release -DNCNN_VULKAN=OFF -DNCNN_BUILD_EXAMPLES=ON ..
详细内容请参考:

测试是否移植成功

ncnn模型部署_qt_02


ncnn模型部署_ncnn模型部署_03

ncnn 的文件都安装在 build 下的 install 里面了
如果需要复制到 /usr/local执行以下指令

sudo cp -r install/bin/* /usr/local/bin/
sudo cp -r install/include/* /usr/local/include/
sudo cp -r install/lib/* /usr/local/lib/

ncnn模型部署_ncnn模型部署_04

四、cmake编译ncnn项目

CMakeLists.txt
指定opencv路径
指定ncnn的安装路径

cmake_minimum_required(VERSION 2.8)

project(demo)
set(OpenCV_DIR "/home/book/opencv/linux/world/opencv-4.5.4/install/lib/cmake/opencv4")
find_package(OpenCV REQUIRED)

set(ncnn_DIR "/home/book/ncnn/ncnn/build/install/lib/cmake/ncnn")
find_package(ncnn REQUIRED)

include_directories(${OpenCV_INCLUDE_DIRS} src/dectector.h)

add_executable(demo src/main.cpp src/detector.cpp)
target_link_libraries(demo ${OpenCV_LIBS} ncnn)

五、qt编译器内编译ncnn项目

.pro文件

# 解决报错:undefined reference to symbol 'omp_get_num_threads@@OMP_1.0'
QMAKE_CXXFLAGS += -fopenmp
LIBS += -fopenmp

#添加opencv环境
unix:!macx: LIBS += -L$$PWD/../../../../opencv/linux/world/opencv-4.5.4/install/lib/ -lopencv_world
INCLUDEPATH += $$PWD/../../../../opencv/linux/world/opencv-4.5.4/install/include/opencv4
DEPENDPATH += $$PWD/../../../../opencv/linux/world/opencv-4.5.4/install/include/opencv4

#添加ncnn环境
unix:!macx: LIBS += -L$$PWD/../../../ncnn/build/install/lib/ -lncnn
INCLUDEPATH += $$PWD/../../../ncnn/build/install/include/ncnn
DEPENDPATH += $$PWD/../../../ncnn/build/install/include/ncnn
unix:!macx: PRE_TARGETDEPS += $$PWD/../../../ncnn/build/install/lib/libncnn.a

程序效果

ncnn模型部署_深度学习_05