前言
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 码云官网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 的文件都安装在 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/
四、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
程序效果