本教程之前试过,是可以用的,但是再次使用时发现不可以了,因此配置教程参考另一篇《ncnn 和 opencv 在 vs2022 上创建工程推理示例》,但是本教程最后的例子还是可以运行的,可作为配置成功的测试样例。

# 下载 cmake,安装

cmake-3.16.5-win64-x64 链接地址:https://github.com/Kitware/CMake/releases/download/v3.16.5/cmake-3.16.5-win64-x64.zip

  • 下载 cmake 到 D:\cmake\ 文件夹下,并解压到此目录下
    图 1

  • 把 bin 目录添加到本机环境变量,鼠标右击 此电脑 -> 高级系统设置(左边)-> 环境变量 -> 选择 path (用户变量)-> 编辑
    图 2

  • 再次进入 D:\cmake\cmake-3.16.5-win64-x64\bin,右击 cmake-gui.exe,发送到桌面快捷方式

# 下载 protobuf,并编译

  • 链接地址:https://github.com/protocolbuffers/protobuf/releases
    图 3

  • 解压文件,并在解压文件同目录下添加文件夹 protobuf-3.11.4-build-vs2019,如下:
    图 4

  • 编译 protobuf 打开 cmake-gui,选择源文件夹下的 cmake,和新建的文件夹,如下所示
    图 5
    configure,主要要选择 Visual Studio 16 2019
    图 6

图 7
Generate 后,在文件夹 protobuf-3.11.4-build-vs2019 生成如下文件
图 8
点击 cmake 下面的 Open Project,进行编译,注意要选择 Release,x64, 右击 INSTALL,点击生成
图 9
编译后如下, 表示编译成功

图 10

在文件夹 protobuf-3.11.4-build-vs2019,会生成 install 文件夹,里面如下

图 11

# 编译 ncnn

  • ncnn 地址: https://github.com/Tencent/ncnn 新建 ncnn 目录 git clone https://github.com/Tencent/ncnn.git 到 ncnn 目录
  • 编译 ncnn 打开 vs2019 自带的 cmd,并且以管理员身份运行
    图 12

opencv 已安装 mkdir ncnn-build-vs2019 cd ncnn-build-vs2019 cmake -G"NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=D:/GIT/ncnn-build-vs2019/install -DProtobuf_INCLUDE_DIR=D:\GIT\protobuf-3.11.4-build-vs2019\install\include -DProtobuf_LIBRARIES=D:\GIT\protobuf-3.11.4-build-vs2019\install\lib/libprotobuf.lib -DProtobuf_PROTOC_EXECUTABLE=D:\GIT\protobuf-3.11.4-build-vs2019\install\bin/protoc.exe -DNCNN_VULKAN=OFF -DOpenCV_DIR=D:/opencv/build D:/GIT/ncnn
图 13

nmake
图 14
nmake install
图 15
ncnn 编译完成,文件夹 ncnn-build-vs2019 下生成 install 文件夹
图 16

# ncnn 例子测试

  • 打开 vs2019, 新建项目
  • 右击项目 -> 属性 -> 配置属性 ->VC++ 目录, 包含目录添加:D:\opencv\build\include;D:\GIT\protobuf-3.11.4-build-vs2019\install\include;D:\GIT\ncnn-build-vs2019\install\include\ncnn 库目录添加:D:\opencv\build\x64\vc15\lib;D:\GIT\protobuf-3.11.4-build-vs2019\install\lib;D:\GIT\ncnn-build-vs2019\install\lib
  • 配置属性 -> 连接器 -> 输入 附件依赖项: opencv_world411.lib ncnn.lib libprotobuf.lib
  • 测试 拷贝 mobilenetssd.cpp, 链接:https://github.com/Tencent/ncnn/blob/master/examples/mobilenetssd.cpp

执行结果如下:
图 17