1

私は古いopencv1に精通しており、そのC関数を長い間使用していました。ただし、opencv2.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ヘッダーの1つが欠落していたため、opencvの構築プロセスでいくつかのライブラリがスキップされました。

4

4 に答える 4

2

私はopencv2.3.1をあまり長く使用していませんが、これまでのところ、インクルードを使用するopencvだけで十分です。

#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

HTH

于 2012-04-07T13:00:15.020 に答える
1

私は問題を見つけたと思います。私が持っているQtソース(4.6.3)にはがないのでqconfig.hcorelib/globalビルドしたときにopencvすべてのライブラリが作成されたわけではなく、ヘッダーはコピーされませんでした。

同じ問題を抱えている他の人がそれを知っていて、解決策を見つけるのに時間を無駄にしないようqtconfig.hに、Qtソース配布には含まれていません。そのファイルを自分で作成する必要があります。そのディレクトリには多数のテンプレートがあり、そのうちの1つ(、など)の名前を変更するかqconfig-largeqconfig-minimal空のを作成しますqconfig.h

編集:私は誰にもこの方法をお勧めしません。ダウンロードしてmingwmakeを作成し、すべてを再ダウンロードしました。これで動作します。opencvで作成したmingwバージョンがQtで使用されているものと同じであることに注意する必要がありました。

于 2012-04-07T15:08:13.060 に答える
-1

秘訣は「インストール」プロジェクトをビルドすることです。これにより、すべてのヘッダーなどが1つのディレクトリに収集され、例に示されているインクルード構造が有効になります。

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