Step0 准备文件
- opencv-4.4.0.zip
- opencv_contrib-4.4.0.zip
- cmake-3.19.1-win64-x64_2.msi
- w_openvino_toolkit_p_2020.4.287.exe
Step1 解压文件
安装cmake-3.19.1-win64-x64_2.msi和w_openvino_toolkit_p_2020.4.287.exe,都默认就好。
将opencv-4.4.0.zip解压到文件夹opencv440中
将opencv_contrib-4.4.0.zip解压到文件夹opencv440/opencv_contrib中
Step2 配置opencv和dnn模块加速
配置好openvino的环境变量
环境变量 | 值 |
---|---|
INTEL_OPENVINO_DIR | C:\Program Files (x86)\IntelSWTools\openvino |
INTEL_CVSDK_DIR | %INTEL_OPENVINO_DIR% |
HDDL_INSTALL_DIR | %INTEL_OPENVINO_DIR%\deployment_tools\inference_engine\external\hddl |
InferenceEngine_DIR | %INTEL_OPENVINO_DIR%\deployment_tools\inference_engine\share |
NGRAPH_DIR | %INTEL_OPENVINO_DIR%\deployment_tools\ngraph\cmake |
OpenCV_DIR | %INTEL_OPENVINO_DIR%\opencv\cmake |
然后在path
中添加
OpenCV相关的的条目可加可不加。
- %HDDL_INSTALL_DIR%\bin
- %INTEL_OPENVINO_DIR%\opencv\bin
- %INTEL_OPENVINO_DIR%\deployment_tools\ngraph\lib
- %INTEL_OPENVINO_DIR%\deployment_tools\inference_engine\external\tbb\bin
- %INTEL_OPENVINO_DIR%\deployment_tools\inference_engine\bin\intel64\Release
- %INTEL_OPENVINO_DIR%\deployment_tools\inference_engine\bin\intel64\Debug
然后打开cmake_gui
设置源文件目录为C:/Users/lenovo/Desktop/opencv440/
设置构建文件目录为C:/Users/lenovo/Desktop/opencv440/build
点击Configure
配置:“VS 15 2017” x64
点击Finish
然后根据下表格配置选项:
选项 | 内容 | 说明 |
---|---|---|
OPENCV_EXTRA_MODULES_PATH | …/opencv440/opencv_contrib/modules | modules路径 |
BUILD_opencv_python_bindings_generator | 不勾选 | |
BUILD_opencv_world | 勾选 | |
WITH_INF_ENGINE | 勾选 | |
OPENCV_ENABLE_NONFREE | 勾选 | 必须勾选 |
点击Configure
将路径
C:\Program Files (x86)\IntelSWTools\openvino_2020.4.287\deployment_tools\inference_engine\share
填入到选项InferenceEngine_DIR中。
把选项WITH_NGRAPH选项勾上,要不然编译时候会报错
把选项BUILD_opencv_python_bindings_generator 去掉勾选,
再点击Configure。
注意,点击Configure以后,可能会联网下载一些文件,如果下载不到的话,自己查资料解决一下,保证点击Configure以后不报错
Step3 打开工程
点击Generate,点击OpenProject,这时,vs会打开此工程。
Step4 编译
在项目中的ALL_BUILD上右键,选择生成。
Step5 导出到install
在项目中的INSTALL上右键,选择“仅用于项目”,选择“仅生成INSTALL”。
在install中即可找到编译好的文件。
Debug模式的文件同理。
Step6 加速推理
net.setPreferableBackend(DNN_BACKEND_INFERENCE_ENGINE); // 不加速时用DNN_BACKEND_OPENCV
net.setPreferableTarget(DNN_TARGET_CPU);
Step7 异常解决
编译之后,在代码中调用过程中,前向推理时会报错,也就是net.forward();时会报错。
在QT中的错误代码是exited with code -1073741515
原因:dll文件缺失。
解决办法,到openvino安装目录下搜索两个文件
ngraph.dll
tbb.dll
上边两个文件,再加上opencv_world440.dll,一共三个文件复制到工程目录下即可。
如果复制后还是有问题,在VS中报错是InferenceEngine::GeneralError什么什么内存错误
,还需要把MKLDNNPlugin.dll
复制过来
更新:OpenCV4.5以后的版本,用这个版本的OpenVINO好像不行,编译的时候会报错。最好用新版本的OpenVINO。上次编译OpenCV4.5.2的时候,用的OpenVINO版本是2021.4,仅供参考。