インポートのみのファイルがあります:
#include <iostream>
#include <stdio.h>
#include "cxcore.hpp"
#include "highgui.hpp"
using namespace cv;
using namespace std;
int main( int argc, char** argv )
{
}
そして、私はg ++ -I/usr/include/opencv -lopencv -lm m.cppでコンパイルしようとします
しかし、聖霊降臨祭のエラーが発生します:
/usr/include/opencv/cxcore.hpp:46からインクルードされたファイル、m.cpp:5から:/usr/include/opencv/cxmisc.h:214:エラー:予期されるコンストラクター、デストラクター、または 'void前の型変換'/usr/include/opencv/cxmisc.h:220:エラー:' int 'の前にコンストラクタ、デストラクタ、または型変換が必要です/usr/include/opencv/cxmisc.h:226:エラー:' CV_INLINE 'は名前を付けませんタイプ/usr/include/opencv/cxmisc.h:516:エラー: 'CV_DEPTH_MAX'はこのスコープで宣言されていません/usr/include/opencv/cxmisc.h:522:エラー: 'CV_DEPTH_MAX'はこのスコープで宣言されていません/ usr/include/opencv/cxmisc.h:522:エラー: 'CV_CN_MAX'はこのスコープで宣言されませんでしたm.cpp:5からインクルードされたファイル:/usr/include/opencv/cxcore.hpp:70:エラー:テンプレート宣言'cv :: CV_EXPORTS cv :: Size_'の/usr/include/opencv/cxcore.hpp:71:エラー: 'cv :: CV_EXPORTS cv :: Point_'のテンプレート宣言/usr/include/opencv/cxcore.hpp: 72:エラー: 'cv :: CV_EXPORTS cv :: Rect_'のテンプレート宣言/usr/include/opencv/cxcore.hpp:77:エラー: 'fromUtf16'の前に初期化子が必要/usr/include/opencv/cxcore.hpp:78:エラー: 'toUtf16'の前に初期化子が必要/usr/include/opencv/cxcore.hpp:80:エラー: 'format'の前に初期化子が必要/usr/include/opencv/cxcore.hpp:82:エラー: ':'トークンの前に初期化子が必要ですm.cpp:38:エラー:入力の最後に '}'が必要です
これは私のcopencv libコンテンツです:
alberto@zefiro:~$ ls /usr/include/opencv/
cvaux.h cvcompat.h cv.hpp cvtypes.h cvvidsurv.hpp cxcore.h cxerror.h cxmat.hpp cxoperations.hpp highgui.h ml.h
cvaux.hpp cv.h cvinternal.h cvver.h cvwimage.h cxcore.hpp cxflann.h cxmisc.h cxtypes.h highgui.hpp
私はubuntu 10.10にいます
ヘッダー-I
(大文字のi)とライブラリ-l
(小文字のL)を適切に含める必要があります。
最新のOpenCVバージョンでは、次のことを行う必要があります。
#include <cv.h>
#include <highgui.h>
そして、それを使ってコンパイルしてみてください:
g++ m.cpp -o app `pkg-config --cflags --libs opencv`
注:コマンドラインでpkg-config --cflags --libs opencv
のみを実行すると、g ++コマンドラインに含める必要があるパスとライブラリが表示されます。
開発環境にpkg-config
がなく、そのため karlphilipが受け入れた回答 が実用的でない場合、またはアプリケーションをリンクするために必要なライブラリの最小限のセットを知る必要がある場合、などのコードを想定
#include <cv.h>
#include <highgui.h>
int main()
{
return 0;
}
必要な最小限の引数セットが見つかるまで、次のリストからライブラリ引数を上から順に追加できます。
-lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann
たとえば、この投稿の上部にリストされているCソースコードは、
gcc hello.c -o hello \
-I /usr/include/opencv \
-L /usr/lib \
-lopencv_core \
-lopencv_imgproc
私の古いx86_64 Ubuntu 12.04ボックス。
次のようなC++コードを想定
#include "core/core.hpp"
#include "highgui/highgui.hpp"
using namespace cv;
using namespace std;
int main( int argc, char** argv )
{
return 0;
}
次に、コンパイルしてリンクします
g++ hello.cpp -o hello \
-I /usr/include/opencv2 \
-L /usr/lib \
-lopencv_core \
-lopencv_imgproc
CMakeを使用してOpenCV
をG++
でコンパイルすることをお勧めします。この方法の方が適していると思います。
cmake_minimum_required(VERSION 3.1)
project(YOUR_PROJECT_NAME)
set(CMAKE_GXX_FLAGS "-Wall -Wextra -Wconversion -pedantic -std=gnu11")
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(YOUR_EXCUTABLE YOUR_CODE_SOURCE_FILES)
target_link_libraries(YOUR_EXCUTABLE ${OpenCV_LIBS})
スクリプトファイルを実行すると、opencvに必要なファイルが自動的にインストールされます。次のコードを実行します。
chmod +x install-opencv.sh
./install-opencv.sh
ライブラリの異なるバージョンをインストールする場合は、インストールスクリプト内のバージョンの最初の行を更新してください。詳細については、 this tutorialを使用してください。次の行でコンパイルします:
g++ `pkg-config --cflags opencv` example.cpp `pkg-config --libs opencv`