OpenCV v1tov2 - eiichiromomma/CVMLAB GitHub Wiki
OpenCV) v1 to v2
(include/opencv/cv.h等の従来使われてきたヘッダの廃止
ビルドエラー
モジュール化に伴いcv.hには以下の記述が入り、環境によってはopencv2以下のヘッダがnot foundでビルドが停止する場合がある。
CV_WARNING("This is a deprecated opencv header provided for compatibility. Please include a header from a corresponding opencv module")
#include "opencv2/core/core_c.h"
#include "opencv2/core/core.hpp"
#include "opencv2/imgproc/imgproc_c.h"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/video/tracking.hpp"
#include "opencv2/features2d/features2d.hpp"
#include "opencv2/calib3d/calib3d.hpp"
#include "opencv2/objdetect/objdetect.hpp"
移行方法
ヘッダファイル(Windows)
INSTALLプロジェクト
SVN版ではINSTALLプロジェクトを実行するとinclude以下に各モジュールのヘッダファイルが、lib以下に各モジュールのライブラリファイルがコピーされる。 あとはLinux, OSXと同様。
INSTALLプロジェクトを実行しない場合
opencv2フォルダはmodulesのcalib3d, contrib, core, features2d, highgui, imgproc, legacy, ml, objdetect, videoに存在する。 includeに一纏めにされていたものがモジュール化に伴いバラバラに配置されたので、いちいちインクルードパスを指定しなければならない。 プロジェクト単位ではなく、VisualStudioのオプションのVC++ディレクトリで指定するのがスマートかも。
c:\OpenCV_SVNにインストールしてある場合、以下のインクルードパスを指定する
c:\OpenCV_SVN\modules\calib3d\include
c:\OpenCV_SVN\modules\core\include
c:\OpenCV_SVN\modules\features2d\include
c:\OpenCV_SVN\modules\highgui\include
c:\OpenCV_SVN\modules\imgproc\include
c:\OpenCV_SVN\modules\legacy\include
c:\OpenCV_SVN\modules\ml\include
c:\OpenCV_SVN\modules\objdetect\include
c:\OpenCV_SVN\modules\video\include
c:\OpenCV_SVN\modules\contrib\include
これで従来のソースはそのままビルド出来るが、include/opencv以下のインクルードファイルは今後廃止される可能性が高い。 cv.h, highgui.hを使っていた場合はC++の場合
#include "opencv2/core/core.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
のような指定になる。coreはどのみち下の2つからincludeされるので無くても問題無い。
ヘッダファイル(Mac OS XとUbuntu)
/usr/local/include/opencv2以下にモジュール名のディレクトリが配置されている。 /usr/local/includeにヘッダ検索パスが通っていれば
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
で良い。
ライブラリ(Windows)
opencv_モジュール名+バージョンという命名になったらしく、cv2??.lib, cxcore2??.lib, highgui2??.libを使っていた場合は
#ifdef _DEBUG
#pragma comment( lib, "opencv_imgproc211d.lib" )
#pragma comment( lib, "opencv_core211d.lib" )
#pragma comment( lib, "opencv_highgui211d.lib" )
#else
#pragma comment( lib, "opencv_imgproc211.lib" )
#pragma comment( lib, "opencv_core211.lib" )
#pragma comment( lib, "opencv_highgui211.lib" )
#endif
のような感じになる。
ライブラリ(Mac OS X)
/usr/local/libを覗くと分かるが libopencv_modulename.dylibとなる。バージョン番号の付いているdylibファイルへのシンボリックリンクになっているので、バージョンアップにも対応出来るよう、番号の付いていない方をリンクする。
て作成したOpenCV Frameworksに
libopencv_core.dylib
libopencv_imgproc.dylib
libopencv_highgui.dylib
を追加する。
ライブラリ(Ubuntu)
ライブラリ名はMacと同様。リンカへのオプションは
-lopencv_core -lopencv_imgproc -lopencv_highgui
のようにする。