【问题标题】:Where is the lib folder (or its replacement) in the current OpenCV?当前 OpenCV 中的 lib 文件夹(或其替换)在哪里?
【发布时间】:2016-06-13 04:11:34
【问题描述】:

我正在关注为旧版本的 OpenCV(OpenCV 2 计算机视觉,PACT 编写)编写的一本书,它告诉我在创建新属性表时将 lib 文件夹包含在我的 Visual Studio 2013 属性管理器中。

我在当前 GitHub 版本(opencv-master,即 OpenCV 3.1.x)中没有看到名为 lib 的目录。此文件夹是否已被其他内容替换?

我用 cmake 构建了 OpenCV。我找到了一个4 year old unanswered question,其中有人也在寻找这个文件夹。他们尝试从另一个不再存在的目录构建库,但无论如何这对他们不起作用......

另一位 OpenCV 用户刚刚告诉我 GitHub 不包含这些库,因此您必须在本地创建它们。我仍然不清楚在哪里/如何制作它们。

我意识到预构建的二进制文件有这个,但我避免使用它们,因为我需要 opencv_contrib 中的 SURF 函数,所以我需要从源代码构建它。

【问题讨论】:

标签: c++ windows visual-studio opencv build


【解决方案1】:

预构建的二进制文件在相应路径下会有一个库文件夹

   Local System Path(Opencv Folder)-> build->x64/x86->vc10/vc11/vc12->lib.

正如您所提到的,您不想使用它,那么剩下的唯一选择就是在本地构建它,如果您打算将 Opencv 库用于各种功能和项目,这是一个更好的选择,因为它可以解决许多构建问题以后可能会遇到的错误。

我使用 Cmake 图形用户界面构建 opencv,以下是我在系统上成功构建库所遵循的步骤。

  1. 因此,您需要创建一个新文件夹,其中包含所有 生成的 Makefile。
  2. 请参考此图更清楚了解:
  3. 在 GUI 中,您定义 OpenCVConfig.cmake 所在的源目录路径,根据您的图像,它是 图像 opencv-master 中的当前文件夹。
  4. 同样,定义您创建的新目录的路径,将存储所有构建文件。
  5. 确保取消选中 Build_Examples 以避免配置错误。
  6. 配置完成后点击底部的配置。(可能需要配置两次)
  7. 单击配置旁边的选项卡后,生成以创建解决方案文件。它会询问您的编译器名称 选择 从选择列表中安装在您的系统上的编译器。后 生成完成。
  8. 转到这个路径 Build_New_Directory(你创建的目录)你会发现 OpenCV.sln 构建这个项目,大约需要 10-15 分钟,具体取决于你的处理器,耐心等待。如果此时出现构建错误,请不要'不要花时间在 Visual Studio 上进行调试,回到 Cmake GUI 并再次配置它,这次给出系统上找不到的依赖库的路径。重复现在应该成功构建的过程。
  9. 成功构建后,您现在可以找到系统上构建的所有 opencv 库的路径,如下所示。 Build_New_Directory(你创建的目录)-> install->x64->vc10(我用的编译器)->lib.

【讨论】:

    【解决方案2】:

    作为 Nikita 遮阳篷的更新: 有一个 cmake 构建错误,如果未设置 OpenCV_RUNTIME,则不会创建 x64 文件夹。如果您使用比当时可用的更新的 Visual Studio 版本(例如 Visual Studio 2017)构建旧 OpenCV(例如

    要解决此问题,请在 ./cmake/OpenCVDetectCXXCompiler.cmake 和 ./cmake/templates/OpenCVConfig.root-WIN32.cmake.in (或 ./cmake/OpenCVConfig.cmake in

    [...]
    elseif(MSVC_VERSION EQUAL 1900)
     set(OpenCV_RUNTIME vc14)
    # old version ends here with endif()
    elseif(MSVC_VERSION GREATER 1909 AND MSVC_VERSION LESS 1920)
      set(OpenCV_RUNTIME vc15)
    elseif(MSVC_VERSION GREATER 1919 AND MSVC_VERSION LESS 1930)
      set(OpenCV_RUNTIME vc16)
    endif()
    [...]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-23
      • 1970-01-01
      • 2016-02-02
      • 2021-01-25
      • 2012-11-17
      • 1970-01-01
      • 2011-07-18
      相关资源
      最近更新 更多