Macプラットフォーム上OpenCV開発環境構築

6222 ワード

今日のほとんどの時間はMac OS X上でOpenCVプロジェクトの開発をどのように行うかを考えています.試した開発ツールはXcode(バージョン4.6.1)とEclipseで、使用するOpenCVバージョンは2.4.6です.
OpenCV関連ヘッダファイルおよびダイナミックライブラリのみが必要な場合は、直接brew install opencv(Homebrewがインストールされている場合)を実行し、できない場合は、次のOpenCVソースコードコンパイルインストール手順を参照してください.

1.CMakeのインストール


CMakeをインストールするにはMacPortsを使うこともできるし、Homebrewを使うこともできます.もし以前に両方をインストールしたことがあれば、それを使ってインストールしましょう.私はHomebrewを使っています.Homebrewを使うことをお勧めします.本当の「醸造」は、次のようにコマンドされています.
sudo port install cmake //macports
sudo brew install cmake //homebrew

2.OpenCVのコンパイル


OpenCVダウンロードアドレス:http://sourceforge.net/projects/opencvlibrary/
現在の最新バージョンは2.4.8で、私は2.4.6を使用しています.ダウンロードして解凍し、次のコードを実行します.
cd 
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local .. 
make
sudo make install

[完了後、/usr/local/includeディレクトリの下にopencvopencv2の2つのディレクトリがあり、/usr/local/libディレクトリの下にはopencv関連のダイナミックライブラリがたくさんあります.例えば、libopencv_core.dylibなど、/usr/localディレクトリの下に保存されている他のいくつかのファイルがあります.]
[注1:不要になった場合、OpenCVをアンインストールするには、releaseディレクトリに戻り、sudo make uninstallを実行し、/usr/localのOpenCVに関連するディレクトリとファイルを手動で削除することができます]
[注2:OpenCVをデフォルトの/usr/local/ディレクトリにインストールしたくない場合は、例えばHomebrewでopencv部分のエラーを防止し、Homebrewでopencvを正常にインストールできない場合は、opencvを別の場所にインストールすることを考慮してCMAKE_INSTALL_PREFIX=/usr/localを修正すればよいが、Eclipseの項目で問題が発生する可能性があり、詳細は後述する]
その他の参考内容:
Building OpenCV from Source Using CMake, Using the Command Line
Installing OpenCV

3.XcodeによるOpenCVプロジェクト開発


1.Open Xcode, choose New -> New Project -> Command Line Tool
2.Name it and select C++ for type
3.Click on your project from the left menu. Click the build settings tab from the top. Filter all. Scroll to Search Paths . Under header search paths , for debug and release, set the path to /usr/local/include . Under library search paths , set the path to $(PROJECT_DIR) . Finally, check if C++ standard library is libstdc++ or not, if not, change it to this!
4.Click on your project from the left menu. File->New->New Group , Name the group OpenCV Frameworks .
5.Select the folder (group) you just labeled, OpenCV Frameworks in the left menu. Go to File -> add Files , Type / , which will allow you to manually go to a folder. Go to -> /usr/local/lib
6.Select both of these files, libopencv_core.dylib , libopencv_highgui.dylib , and click Add . (you may need to add other library files from this folder to run other code.)
7.You must include this line of code in the beginning of your main.cpp file: #include
mainを変更できます.cpp、コードは以下の通りで、実行結果は指定された画像を表示します.
#include 
using namespace cv;
int main(int argc, char** argv) {
    Mat image;
    image = imread("/Users/hujiawei/Pictures/others/other_naicha/naicha.jpg", 1);
    namedWindow("Display Image", WINDOW_AUTOSIZE);
    imshow("Display Image", image);
    waitKey(0);
    return 0;
}

その他の参考内容:
C++ linking error after upgrading to Mac OS X 10.9/Xcode 5.0.1
MathLink linking error after OS X 10.9 (Mavericks) upgrade

4.EclipseによるOpenCVプロジェクト開発


Eclipse開発を使用する場合は、次の手順に従います.
1.通常の手順に従い、Eclipseを使用してMac C++プロジェクトを構築し、cppファイルを含む
2.工事名を右クリックし、Propertiesを選択し、属性配置ページで選択し、C/C++ Buildをクリックし、ドロップダウンオプションでSettingsを選択する.右側のタブでTool Settingsを選択します.
3.GCC C++ CompilerオプションリストでIncludesを選択し、Include paths(-l)にインストールされたopencvのヘッダファイル格納ディレクトリを追加する:/usr/local/include/[opencvヘッダファイルを格納するディレクトリ、自分で状況を見て決める]
4.MacOS X C++LinkerオプションリストでLibraryを選択し、Library search path (-L)にインストールされたopencv dylibファイル格納ディレクトリを追加:/usr/local/lib/[私のテストではこのディレクトリしかありません!他のディレクトリはそのサブディレクトリでもだめです!他のパスではコピーしてもいいです!]
5.MacOS X C++LinkerオプションリストでLibraryを選択し、Libraries(-l)番をクリックし、使用するlibファイルを追加します(通常、最初の3つを使用します.接頭辞libは含まれません.バージョン番号を追加できます).
opencv_core opencv_imgproc opencv_highgui opencv_ml opencv_video opencv_features2d opencv_calib3d opencv_objdetect opencv_contrib opencv_legacy opencv_flann
6.プロジェクトを再構築すればよい.
問題が発生した場合は、コードに追加されていないライブラリファイルが含まれているかどうかを確認してから、他の問題があるかどうかを確認します.Macプラットフォームの場合は、次の質問ld: symbol(s) not found for architecture x86_64の説明を参照してください.
There are two implementations of the standard C++ library available on OS X: libstdc++ and libc++. They are not binary compatible and libMLi3 requires libstdc++.
On 10.8 and earlier libstdc++ is chosen by default, on 10.9 libc++ is chosen by default. To ensure compatibility with libMLi3, we need to choose libstdc++ manually.
To do this, add -stdlib=libstdc++ to the linking command.

詳細については、以下を参照してください.
http://blog.sciencenet.cn/blog-702148-657754.html
5.オープンソース項目を読む
オープンソースプロジェクトMastering OpenCV with Practical Computer Vision Projectsのコードを読み、第8章Face Recognition using Eigenfaces or Fisherfacesを例に
次のようなshellを作成します(ld: symbol(s) not found for architecture x86_64から修正されました).README.txtはOpenCVソースコードをコンパイルしたフォルダ(上のreleaseディレクトリなど)で、このshellを実行するとXcodeプロジェクトが得られます.もちろん、このプロジェクトを開いた後、対応する配置を変更します.
export OpenCV_DIR="/Volumes/hujiawei/Users/hujiawei/Android/opencv-2.4.6.1/build"
mkdir build
cd build
cp $OpenCV_DIR/../data/lbpcascades/lbpcascade_frontalface.xml .
cp $OpenCV_DIR/../data/haarcascades/haarcascade_eye.xml .
cp $OpenCV_DIR/../data/haarcascades/haarcascade_eye_tree_eyeglasses.xml .
cmake -G Xcode -D OpenCV_DIR=$OpenCV_DIR ..