如何在Qt中部署openvino-opencv
我想将openvino opencv用于基于Qt(如何在Qt中部署openvino-opencv,qt,opencv,openvino,Qt,Opencv,Openvino,我想将openvino opencv用于基于Qt(Qt5.7.1)的项目。我已经按照windows10中的说明下载并安装了openvino411(对应于opencv411)。我编写了一个.pri文件,以在Qt中解压缩opencv: INCLUDEPATH += C:/openvino-411/openvino_2019.2.275/opencv/include CONFIG(release, debug|release):{ LIBS += -LC:/openvino-411/open
Qt5.7.1
)的项目。我已经按照windows10中的说明下载并安装了openvino411(对应于opencv411)。我编写了一个.pri
文件,以在Qt中解压缩opencv:
INCLUDEPATH += C:/openvino-411/openvino_2019.2.275/opencv/include
CONFIG(release, debug|release):{
LIBS += -LC:/openvino-411/openvino_2019.2.275/opencv/lib \
-lopencv_core411 -lopencv_highgui411 -lopencv_imgproc411 -lopencv_imgcodecs411 -lopencv_features2d411 -lopencv_ml411 -lopencv_objdetect411 -lopencv_dnn411
}
CONFIG(debug, debug|release):{
LIBS += -LC:/openvino-411/openvino_2019.2.275/opencv/lib \
-lopencv_core411d -lopencv_highgui411d -lopencv_imgproc411d -lopencv_imgcodecs411d -lopencv_features2d411d -lopencv_ml411d -lopencv_objdetect411d -lopencv_dnn411d
}
但它似乎不能在Qt中运行opencv,因为我尝试运行Qt程序。弹出的cmd窗口直接进入“
按关闭此窗口…
”,实际上不做任何操作 首先,请记住,windows的OpenVINO是根据MSBUILD而不是MinGW编译的,因此如果您的Qt项目是使用MinGW编译的,那么OpenVINO预构建库在链接过程中可能会失败
也就是说,在LINUX(Ubuntu 16.04)下,我成功地将OpenVINO推理引擎与OpenCV集成到一个已经存在的基于Qt的大型项目(Qt 5.13.1)中,在Windows下,依赖项的碎片化似乎使它变得更加困难
这种配置相当棘手,而且(对我来说)还在进行中,我正在尝试完全隔离OpenVINO依赖项,目的是将它们完全嵌入到我们的应用程序中,不管怎样,它是这样工作的:
首先,我安装了OpenVINO(),并特别注意按照描述的步骤进行操作
另外,请不要错过运行两个示例demo_security_barrier_camera和demo_squeezenet_download_convert_RUN,它们将生成两个库libcpu_extension.so和libgflags_nothreads.a,如果没有这两个库,OpenVINO将无法在您的项目下工作,我不知道为什么会这样做
我在我的项目(ThirdPartyLibraries/OpenVinoReferenceEngine)的子文件夹下复制了以下库:
- libinference_engine.so(可在OpenVINO安装文件夹中找到:/opt/intel/OpenVINO/inference_engine/lib/intel64/libinference_engine.so)
- libtbb.so(可在OpenVINO安装文件夹中找到:/opt/intel/OpenVINO/inference\u engine/external/tbb/lib/intel64/libtbb.so)
- 扩展/libgflags\u nothreads.a(在OpenVINO推理引擎演示构建文件夹中找到,对我来说是/home/myuser/Inference\u Engine\u demos\u BUILD/Release/lib/libgflags\u nothreads.a)
- extension/libcpu\u extensio.so(在OpenVINO推理引擎Demo BUILD文件夹中找到,对我来说是/home/myuser/Inference\u Engine\u demos\u BUILD/Release/lib/libcpu\u extensio.so)
- 在/opt/intel/openvino/inference\u engine/include/下找到的所有内容都在/ThirdPartyLibraries/OpenVINOInferenceEngine/include下
- 在/opt/intel/openvino/deployment\u toos/interference\u engine/src/extension/下找到的所有内容都位于/ThirdPartyLibraries/OpenVINOInferenceEngine/extension/include下
OPENVINODIR = /home/myuser/code_qt5_HG/Libraries/ThirdPartyLibraries/OpenVINOInferenceEngine
LIBS_OPENVINO += -L$$OPENVINODIR \
-linference_engine \
-ltbb \
-L$$OPENVINODIR/extension \
-lcpu_extension
INCLUDES_OPENVINO += $$OPENVINODIR/include \
+= $$OPENVINODIR/extension/include
LIBS += $$LIBS_OPENVINO
INCLUDEEPATH += $$INCLUDES_OPENVINO
就是这样,这样做允许我在我的项目中引用和使用推理机,如下所示:
#include <ie_core.hpp>
#include <ie_plugin_config.hpp>
#include <cpp/ie_cnn_net_reader.h>
#include <ext_list.hpp>
.....
InferenceEngine::Core ie;
ie.AddExtension(std::make_shared<InferenceEngine::Extensions::Cpu::CpuExtensions>(), "CPU");
InferenceEngine::CNNNetReader netReader;
netReader.ReadNetwork(detectorXmlPath);
netReader.getNetwork().setBatchSize(1);
netReader.ReadWeights(detectorBinPath);
InferenceEngine::InputsDataMap inputInfo(netReader.getNetwork().getInputsInfo());
.....
#包括
#包括
#包括
#包括
.....
推理引擎:核心ie;
ie.AddExtension(std::make_shared(),“CPU”);
推理引擎:CNNNetrader网络阅读器;
netReader.ReadNetwork(detectorXmlPath);
netReader.getNetwork().setBatchSize(1);
netReader.ReadWeights(detectorBinPath);
推断引擎::InputsDataMap inputInfo(netReader.getNetwork().getInputsInfo());
.....
要将我的应用程序部署到第三方机器上,我需要按照常规过程()在机器上安装OpenVINO,并像通常那样部署我的应用程序,然后正确解决依赖关系
我的最后两分钱:据他们说,我与英特尔有直接联系,英特尔支持我进行OpenVINO集成“在/deployment\u tools/inference\u engine/lib/intel64、来自/deployment\u tools/inference\u engine/external/mkltiny\u lnx/lib和/deployment\u tools/inference\u engine/external/tbb/lib的所有.so文件几乎都是所需的依赖项“,我仍然没有时间确认这一点。首先,请记住,windows的OpenVINO是根据MSBUILD而不是MinGW编译的,因此如果您的Qt项目是使用MinGW编译的,则OpenVINO预构建库在链接过程中可能会失败。” 也就是说,在LINUX(Ubuntu 16.04)下,我成功地将OpenVINO推理引擎与OpenCV集成到一个已经存在的基于Qt的大型项目(Qt 5.13.1)中,在Windows下,依赖项的碎片化似乎使它变得更加困难 这种配置相当棘手,而且(对我来说)还在进行中,我正在尝试完全隔离OpenVINO依赖项,目的是将它们完全嵌入到我们的应用程序中,不管怎样,它是这样工作的: 首先,我安装了OpenVINO(),并特别注意按照描述的步骤进行操作 另外,请不要错过运行两个示例demo_security_barrier_camera和demo_squeezenet_download_convert_RUN,它们将生成两个库libcpu_extension.so和libgflags_nothreads.a,如果没有这两个库,OpenVINO将无法在您的项目下工作,我不知道为什么会这样做 我在我的项目(ThirdPartyLibraries/OpenVinoReferenceEngine)的子文件夹下复制了以下库:
- libinference_engine.so(可在OpenVINO安装文件夹中找到:/opt/intel/OpenVINO/inference_engine/lib/intel64/libinference_engine.so)
- libtbb.so(可在OpenVINO安装文件夹中找到:/opt/intel/OpenVINO/inference\u engine/external/tbb/lib/intel64/libtbb.so)
- 扩展/libgflags\u nothreads.a(已找到