【问题标题】:Using OpenCV 2.4.0 in a Visual studio 2010 project在 Visual Studio 2010 项目中使用 OpenCV 2.4.0
【发布时间】:2013-05-11 18:01:37
【问题描述】:

我在How to link and use OpenCV headers? 上问过类似的问题,但到目前为止还没有运气。所以我决定提出一个新的、更具体的问题。

谁能告诉我我的 C++ 项目中需要包含哪些特定于 OpenCV 的文件夹或文件——以及如何包含它们?我已经在我的 C:\ 驱动器上安装了 OpenCV 2.4.0。我查看了 openCV 网站上的教程,但它们适用于旧版本(OpenCV 2.1),并引用了现在不存在的文件,例如 objdetect.hpp(例如)。

请帮忙。谢谢。

【问题讨论】:

标签: c++ opencv


【解决方案1】:

http://docs.opencv.org/doc/tutorials/introduction/windows_visual_studio_Opencv/windows_visual_studio_Opencv.html#windows-visual-studio-how-to

将这些添加到您的 stdafx.h

#include <opencv2/core/core.hpp>        // cv::Mat etc, always need this
#include <opencv2/imgproc/imgproc.hpp>  // all the image processing functions
#include <opencv2/highgui/highgui.hpp>  // Display and file I/O

假设您已将 OPENCV_DIR 设置为放置 opencv 的位置,例如。 OPENCV_DIR=c:\opencv2.4\opencv

然后将项目设置中的VC++目录设置为 包括添加$(OPENCV_DIR)\include 和库添加$(OPENCV_DIR)\lib

然后在“链接器输入”中添加opencv_core240.lib(opencv_core240D.lib用于调试)opencv_imgproc240.lib和opencv_highgui240.lib等

【讨论】:

  • 这里我首先想到的是“为什么子库不总是包含核心?”但这更适合 OpenCV 网站。
  • @Kevin - 你总是可以制作一个包含所有其他文件的“opencv.hpp”,但这就是预编译头文件所做的事情。不幸的是,库的数量正在增加,因为它们必须分离出在某些国家/地区获得专利的功能 - 尽管例如会有一个 opencv_global.lib。难以拥有大量库的手机
  • 我的意思不是“总是包含所有内容”我的意思是,如果您总是需要包含这个标题以供其他标题使用,那么为什么其他标题不包含它,从而节省了多行用户不需要在他们的文件中?有些东西告诉我它们是,额外的包含是多余的,但我以前没有使用过这个库,这只是我看到你的 sn-p 时想到的第一件事。如果我只是解释您的 sn-p 错误,请原谅我。
  • @kevin - 每个其他库都必须包含核心,因为您可能使用 imgproc 但不是 highgui 或 vv。 'C/C++' 方法是在程序级别执行此操作,而不是包含链接其他包含。 C++ STL 更糟糕,您必须知道继承树才能获取包含以进行简单的控制台打印
【解决方案2】:

OpenCV 的文件夹结构在 2.4 中发生了变化,因此您应该使用教程中没有提到的其他文件夹:

  • OPENCV_DIR 指向构建目录(例如C:\opencv\build),而不是特定于平台的目录。
  • Path-Variable 必须指向特定于平台的 bin 目录(例如 %OPENCV_DIR%\x86\vc10\bin)...
  • ...链接器属性相同(例如$(OPENCV_DIR)\x86\vc10\lib

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-08
    • 2016-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-12
    • 1970-01-01
    相关资源
    最近更新 更多