我想对基于Qt(Qt5.7.1)的项目使用openvino-opencv。我已按照Windows10 https://docs.openvinotoolkit.org/latest/_docs_install_guides_installing_openvino_windows.html#Configure_MO中的说明下载并安装了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
}

但是它似乎opencv canot可以在Qt中运行,因为我尝试运行qt程序。弹出的cmd窗口将直接转到“Press <RETURN> to close this window...”,而无需实际执行任何操作。

最佳答案

首先,请记住,针对Windows的OpenVINO是针对MSBUILD而不是MinGW进行编译的,因此,如果您的Qt项目是使用MinGW进行编译的,则OpenVINO预先构建的库在链接期间可能会失败

就是说,我设法在一个已经存在的基于Qt的大型项目(QT 5.13.1)中成功地将OpenVINO推理引擎与OpenCV集成在一起,在LINUX(Ubuntu 16.04)下,它证明在Windows下依赖项的碎片化使它变得更加困难。

这种配置非常棘手,对我来说也是一项正在进行的工作,我试图完全隔离OpenVINO依赖项,旨在将它们完全嵌入我们的应用程序中,无论如何它都可以这样工作:

首先,我安装了OpenVINO(https://docs.openvinotoolkit.org/latest/_docs_install_guides_installing_openvino_linux.html),要特别注意按照说明进行的每个步骤,

同样不要错过运行这两个示例demo_security_barrier_camera和demo_squeezenet_download_convert_run,它们将生成两个库libcpu_extension.so和libgflags_nothreads.a,而无需在您的项目下使用OpenVINO时,这种方式对我来说是未知的

我将以下库复制到项目的子文件夹下(ThirdPartyLibraries / OpenVINOInferenceEngine):

  • libinference_engine.so (可在OpenVINO安装文件夹中找到:/opt/intel/openvino/inference_engine/lib/intel64/libinference_engine.so)
  • libtbb.so (位于OpenVINO安装文件夹中:/opt/intel/openvino/inference_engine/external/tbb/lib/intel64/libtbb.so)

  • 对于两个“cpu扩展”库,我创建了一个名为“extension”的子文件夹,因此:
  • 扩展名/libgflags_nothreads.a (在OpenVINO推理引擎演示BUILD FOLDER中找到,对我来说是/home/myuser/inference_engine_demos_build/Release/lib/libgflags_nothreads.a)
  • 扩展名/libcpu_extensio.so (在OpenVINO Inference Engine Demo BUILD FOLDER中找到,对我来说是/home/myuser/inference_engine_demos_build/Release/lib/libcpu_extensio.so)

  • 然后,我还将Inference Engine和Lib Cpu Extension的包含内容从它们各自的安装文件夹复制到了ThirdPartyLibraries:
  • / opt / intel / openvino / inference_engine / include / 下找到的所有内容都在 / ThirdPartyLibraries / OpenVINOInferenceEngine / include 之下
  • / opt / intel / openvino / deployment_toos / inference_engine / src / extension / 下找到的所有内容都在 / ThirdPartyLibraries / OpenVINOInferenceEngine / extension / include之下

  • 最后,这是我的Qt .pri文件:
    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());
    
     .....
    

    要将我的App部署到第三方计算机上,我需要按照常规过程(https://docs.openvinotoolkit.org/latest/_docs_install_guides_installing_openvino_linux.html)在该计算机上安装OpenVINO,并像往常一样部署我的App,然后正确解决了依赖性。

    最后两分钱:我与Intel直接联系,后者通过OpenVINO集成为我提供支持,据他们说:“/ deployment_tools / inference_engine / lib / intel64中的所有.so文件都来自/ deployment_tools / inference_engine / external / mkltiny_lnx / lib和/ deployment_tools / inference_engine / external / tbb / lib几乎都是所需的依赖项”,我仍然没有时间确认

    10-08 12:05