1

我对旧的opencv 1很熟悉,并且长期使用它的C函数。但是,我在切换到 opencv 2.3 的 C++ API 时遇到问题

我下载了最新的稳定版本(2.3.1),但其中的示例使用旧的 C 函数或包含"opencv2/highgui/highgui.hpp".

问题是,我的目录中唯一的文件include/opencv2opencv.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

等等

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

编辑:如果这很重要,我正在使用 Qt。我从http://code.opencv.org/svn/opencv/branches/2.3/下载了源代码并成功构建了它。

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

4

4 回答 4

2

我没有使用 opencv 2.3.1 太久了,但到目前为止,使用 include fromopencv已经足够了

#include <opencv/cv.h>
#include <opencv/highgui.h>
于 2012-04-07T12:50:12.807 回答
1

我最近开始学习 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,所以 .pro 文件如下所示:

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

高温高压

于 2012-04-07T13:00:15.020 回答
1

我想我找到了问题所在。我拥有的 Qt 源(4.6.3)没有qconfig.hin corelib/global,所以当我构建时opencv,并不是所有的库都被创建,并且头文件没有被复制。

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

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

于 2012-04-07T15:08:13.060 回答
-1

诀窍是构建“安装”项目。这会将所有标题等收集到一个目录中,并将启用示例显示的包含结构。

# create a build-directory, run cmake etc.
make
make install
于 2012-09-23T04:58:53.153 回答