当前OpenCV中的lib文件夹(或其替代品)在哪里?

时间:2016-02-29 22:35:42

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

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

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

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

另一位OpenCV用户告诉我,GitHub并不包含这些库,所以你必须在本地进行cmake。我还不清楚我可以在哪里或如何制作它们。

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

2 个答案:

答案 0 :(得分:4)

预构建的二进制文件将在相应的路径中具有库文件夹

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

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

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

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

答案 1 :(得分:0)

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

要解决此问题,请在./cmake/OpenCVDetectCXXCompiler.cmake和./cmake/templates/OpenCVConfig.root-WIN32.cmake.in(或在./cmake/OpenCVConfig.cmake中)中添加正确的MSVC_VERSION elseif-cases。

[...]
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()
[...]