1、配置项目库、头文件
Debug - X64
项目 ------ 右键属性 ------ VC++目录
其中需要配置的是包含目录和库目录;包含目录指 ------ 头文件目录; 库目录 ------ lib文件
首先导入opencv、Openvino相关头文件
- C:\Intel\openvino_2021.3.394\opencv\include
- C:\Intel\openvino_2021.3.394\opencv\include\opencv2
- C:\Intel\openvino_2021.3.394\deployment_tools\inference_engine\include
首先导入opencv、Openvino相关库文件 - C:\Intel\openvino_2021.3.394\opencv\lib
- C:\Intel\openvino_2021.3.394\deployment_tools\inference_engine\lib\intel64\Debug
导入相关头文件 — 这里是根据openvino demo里面带的案例改的。(案例为分类)
#include <vector>
#include <memory>
#include <string>
#include <iterator>
#include <samples/common.hpp>
#include <inference_engine.hpp>
#include <samples/ocv_common.hpp>
#include <samples/classification_results.h>
马上出现 bug
出现错误的原因:没有导入相关头文件,导入即可:在openvino的安装路径里面搜索common.hpp,就能搜到。
改错,在属性里面添加如下头文件
- C:\Intel\openvino_2021.3.394\deployment_tools\inference_engine\samples\cpp\common
添加后:
这个标红头文件是用来后处理的过程,这里推理就行了,没必要用删除就可。
2、插入推理代码
(这里的代码是和B站里的一个大佬学的,整个代码量和清晰度要比官方的实例要好些)
改错:
- Core ie; 添加相关命名空间: using namespace InferenceEngine;
- device_name 没有定义; **添加定义:**std::string device_name = “CPU”;
- imread_t(input_image_path); imread_t做的啥二进制读取图片;改为: cv::Mat image = cv::imread(input_image_path); 按照opencv imread函数读取图片
- input_image_path 没有定义; 添加定义: std::string input_image_path = “CPU”;
- wrapMat2Blob 函数没有定义,添加定义文件
3、改错
1、不安全字符:SDL检查改为 否
2、错误 C2084 函数“InferenceEngine::Blob::Ptr wrapMat2Blob(const cv::Mat &)”已有主体
程序代码已经写好了,则怎么办
1)用它的头文件,删除前面添加的wrapMat2Blob 的函数定义;
2)删除相关头文件,直接使用函数定义;(#include <samples/ocv_common.hpp>)建议使用
记得添加 #include <opencv2/opencv.hpp>
3、无法解析的外部符号
原因:只加载了头文件,并没有添加相关的依赖库;
改错: 添加 opencv 和 openvino相关的库, 带 d的库
到这,编译可以通过了;
4、缺乏相应的库文件
什么什么 .dll 这个时候,就是相应的缺什么就去 openvino下面搜就行了
opencv的 和 openvino的
- C:\Intel\openvino_2021.3.394\opencv\bin 所有带 *d.dll的
- C:\Intel\openvino_2021.3.394\inference_engine\bin\intel64\Debug 推理库;里面所有的都复制,因为里面是对不同的东西的插件。CPU\GPU等等。
- tbb_debug.dll \ ngraph.dll 直接搜就可以