如何使用text.hpp(可选模块)重新编译OpenCV?

时间:2018-01-06 18:34:39

标签: c++ opencv compiler-errors

所以我试图建立the demo program for text detection,而CMake正在抱怨" text.hpp"不存在。我查了一下,事实证明它只存在于the optional modules中。 如何使用这些模块重新编译OpenCV而不会破坏所有内容?

编辑:我正在使用Ubuntu,我从命令行使用CMake编译程序。

编辑2:我尝试运行sudo make uninstall,克隆了repos(主要和模块),然后是following the instructions to build with those modules,但CMake仍然报告text.hpp不存在。

2 个答案:

答案 0 :(得分:1)

以下说明介绍了如何从头开始构建OpenCV 3.4.0以及额外的模块。我们假设使用Visual Studio 2017 15.5和CMake 3.10.0-rc1。以下命令在Windows中的Git bash上执行。 <project_dir>表示驻留克隆存储库的目录。

  1. 克隆存储库

    $ cd <project_dir>  
    $ git clone git@github.com:opencv/opencv.git  
    $ cd opencv  
    $ git checkout tags/3.4.0
    
    $ cd <project_dir>
    $ git clone git@github.com:opencv/opencv_contrib.git
    $ cd opencv_contrib
    $ git checkout tags/3.4.0
    
  2. 使用额外模块配置OpenCV

    $ cd <project_dir>/opencv
    $ mkdir build && cd build
    $ cmake \
    -D OPENCV_EXTRA_MODULES_PATH="<project_dir>/opencv_contrib/modules" \
    -G "Visual Studio 15 2017 Win64" ..
    
  3. 构建并安装库。构建的库和标头将安装在<project_dir>/opencv/build/install

    $ cmake --build . --config Release --target INSTALL
    
  4. 您提到的示例似乎不是默认构建的。让我们构建它。首先创建新项目目录并复制必要的文件。

    $ cd <project_dir>
    $ mkdir opencv_text_samples && cd opencv_text_samples
    $ cp <project_dir>/opencv_contrib/modules/text/samples/* .
    
  5. 创建一个CMakeLists.txt为

    $ cat CMakeLists.txt
    cmake_minimum_required(VERSION 3.10)
    project(opencv_text_samples)
    find_package(OpenCV REQUIRED)
    add_executable(textdetection textdetection.cpp)
    target_link_libraries(textdetection ${OpenCV_LIBS})
    
  6. 构建项目。必须在OpenCV_DIR中指定OpenCV的安装目录。

    $ mkdir build && cd build
    $ cmake \
    -D OpenCV_DIR="<project_dir>/opencv/build/install" \
    -G "Visual Studio 15 2017 Win64" ..
    
  7. 复制必要的dll和依赖项。完成!

    $ cp <project_dir>/opencv/build/install/x64/vc15/bin/* .
    $ cp <project_dir>/opencv_contrib/*.xml .
    $ ./textdetection ../../scenetext_word01.jpg 
    

答案 1 :(得分:0)

原来我将OPENCV_EXTRA_MODULES_PATH设置为"<project_dir>/opencv_contrib",忘记将/modules放在最后......对不起大家