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