Mac平台上OpenCV开发环境搭建

今天大部分时间都是在琢磨如何在Mac OS X上进行OpenCV项目的开发,尝试的开发工具备Xcode(版本是4.6.1)和Eclipse,使用的OpenCV版本是2.4.6。html

若是只是须要OpenCV的相关头文件以及动态库,请直接执行brew install opencv(若是安装了Homebrew的话),若是不行,请看下面的OpenCV源码编译安装过程。linux

1.安装CMake

安装CMake可使用MacPorts,也可使用Homebrew,若是之前安装过二者中的任何一个就用那个进行安装吧,我用的是Homebrew,推荐使用Homebrew,真正的“佳酿”,命令以下:c++

sudo port install cmake //macports
sudo brew install cmake //homebrew

2.编译OpenCV

OpenCV下载地址:http://sourceforge.net/projects/opencvlibrary/git

目前最新版本是2.4.8,我使用的是2.4.6,下载后解压,执行下面代码:github

cd <path-to-opencv-source>
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local .. 
make
sudo make install

[完成以后在/usr/local/include目录下便有了opencvopencv2两个目录,在/usr/local/lib目录下有不少的opencv相关的动态库,例如libopencv_core.dylib等等,还有几个其余的文件,它们都存放在/usr/local目录下]shell

[注1:若是不须要了,想要卸载 OpenCV的话,能够回到release目录,执行sudo make uninstall,而后手动删除一些/usr/local下与OpenCV有关的目录和文件]xcode

[注2:若是不想把OpenCV安装在默认的/usr/local/目录下的话,例如为了防止Homebrew中对opencv部分的报错,而又没法使用Homebrew正常安装opencv的状况下,能够考虑将opencv安装到其余的位置,修改CMAKE_INSTALL_PREFIX=/usr/local便可,可是在Eclipse中的项目中可能会出现问题,详情看后面]ide

其余参考内容:工具

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 <opencv2/opencv.hpp>

能够修改main.cpp,代码以下,运行结果就是显示一张指定的图片。

#include <opencv2/opencv.hpp>
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文件(一般状况下,使用前三个,注意不要包括前缀lib,能够添加版本号):

opencv_core opencv_imgproc opencv_highgui opencv_ml opencv_video opencv_features2d opencv_calib3d opencv_objdetect opencv_contrib opencv_legacy opencv_flann

6.从新build项目便可。

若是遇到问题ld: symbol(s) not found for architecture x86_64,先检查代码中是否须要包含尚未添加的库文件,再检查是不是其余问题。若是是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,内容以下(修改自README.txt),其中的OpenCV_DIR为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 ..
相关文章
相关标签/搜索