C++ 正确包括使用新的C++;opencv 2.3中的API

C++ 正确包括使用新的C++;opencv 2.3中的API,c++,qt,opencv,include,C++,Qt,Opencv,Include,我熟悉旧的opencv 1,并且长期使用它的C函数。但是,我对OpenCV 2.3版的C/C++ API有问题 我下载了最新的稳定版本(2.3.1),但其中的示例要么使用旧的C函数,要么包括“opencv2/highgui/highgui.hpp” 问题是,我的include/opencv2目录中唯一的文件是opencv.hpp。如果我包括这一点,有很多路径是不正确的。 在opencv.hpp中,有以下内容: #include "opencv2/core/core_c.h" #include "

我熟悉旧的opencv 1,并且长期使用它的C函数。但是,我对OpenCV 2.3版的C/C++ API有问题 我下载了最新的稳定版本(2.3.1),但其中的示例要么使用旧的C函数,要么包括
“opencv2/highgui/highgui.hpp”

问题是,我的
include/opencv2
目录中唯一的文件是
opencv.hpp
。如果我包括这一点,有很多路径是不正确的。 在
opencv.hpp
中,有以下内容:

#include "opencv2/core/core_c.h"
#include "opencv2/core/core.hpp"
#include "opencv2/flann/miniflann.hpp"
#include "opencv2/imgproc/imgproc_c.h"
等等

但是,在我的opencv目录中,包含文件位于以下文件夹中:

modules/core/include/opencv2/core
modules/flann/include/opencv2/flann
modules/imgproc/include/opencv2/imgproc
等等

那么,如果我必须为每个标头手动指定include路径,
opencv.hpp
,这有什么意义呢?在opencv站点上(http://opencv.willowgarage.com)这些教程要么完全过时了,要么根本没有解决这个问题,而是直接跳到了算法上

编辑:如果有必要,我正在使用Qt。我从下载了源代码并成功构建了它


Edit2:是的,这很重要。缺少一个Qt头,因此opencv的构建过程跳过了几个库。

我使用opencv 2.3.1的时间太长了,但到目前为止,使用来自
opencv
的include已经足够了

#include <opencv/cv.h>
#include <opencv/highgui.h>
#包括
#包括

我最近开始学习opencv(2.3),正如juanchopanza提到的,这应该足够了。我正在使用osx,并安装了opencv 1.0,因此我的机器上的基本程序如下所示:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

using namespace cv;

int main()
{
    namedWindow("HelloCV2");
    imshow("image",imread("../HelloCV2/dolphin_1.jpg"));
    waitKey(5000);
    return 1;
}
QT       += core

QT       -= gui

TARGET = HelloCV2
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app


SOURCES += main.cpp

INCLUDEPATH += /opt/local/include/ #this is where the header files are on my machine
LIBS += /opt/local/lib/libopencv_core.2.3.1.dylib
LIBS += /opt/local/lib/libopencv_highgui.2.3.1.dylib

我想我找到了问题所在。我拥有的Qt源代码(4.6.3)在
corelib/global
中没有
qconfig.h
,因此当我构建
opencv
时,并没有创建所有库,也没有复制头文件

只是为了让其他有同样问题的人知道这一点,而不是浪费数小时寻找解决方案:
qtconfig.h
不包含在Qt源代码发行版中。您必须自己创建该文件,其目录中有许多模板,或者重命名其中一个(
qconfig-large
qconfig-minimal
,等等),或者只创建一个空的
qconfig.h


编辑:我不向任何人推荐这种方式。我下载并创建了一个mingw make,重新下载了所有内容,现在可以正常工作了。我必须注意,我构建的opencv的mingw版本与Qt使用的版本相同。

关键在于构建“安装”项目。这将把所有的头等收集到一个目录中,并启用示例中显示的include结构

# create a build-directory, run cmake etc.
make
make install

cv.h
包含以下内容:
#包括“opencv2/core/core\u c.h”
#包括“opencv2/core/core.hpp”#包括“opencv2/imgproc/imgproc.h”#包括“opencv2/imgproc/imgproc.hpp”等,所以我仍然有同样的问题。您使用哪些包含路径?您是否手动设置了opencv2/…的所有包含路径@vsz我想
opencv/cv.h
的意义在于,你不必担心个人包含的内容。如果您希望更细粒度,那么您可以包括,例如,
opencv/cxcore.h
等等。问题是,当我包括
opencv/cv.h
时,我会出现编译器错误,因为它找不到
“opencv2/core/core\c.h”
和所有其他内容。但是当您构建时,
模块
部分丢失,所有标题应以
opencv
opencv2
结尾。你遵循了吗?你必须手动复制文件,或者你需要的所有包含都在“opencv”和“opencv2”之外的地方,这是没有意义的,所以我认为你的构建一定出了问题。顺便说一句,这两个包含似乎都在
opencv/highgui.h
你的包含路径中有
/include
,因此,您的
#include
实际上是
#include/include/opencv2/core/core.hpp>
。我的问题是,在我的
include/opencv2
目录中,除了
opencv.hpp
之外,什么都没有。所有其他标题都在各自的目录中,正如我在问题中所写的那样。@vsz您使用的是什么操作系统?如果你在文件系统中搜索丢失的头文件,它们会出现吗?@George Profenza:是的,它们会出现。请参阅我问题的第二部分:
modules/core/include/opencv2/core
modules/flann/include/opencv2/flann
,等等@George Profenza:在Windows下,它就像
C:\opencv\modules\core\include\opencv2\core\core.hpp
。为了成为一个好的答案,请添加一些代码或示例,这种回答实际上应该是一种评论