您的位置:首页 > 移动开发 > IOS开发

IOS Mac平台上OpenCV开发环境搭建(配置)

2016-03-14 16:19 881 查看
转自:https://segmentfault.com/a/1190000000711132

今天大部分时间都是在琢磨如何在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 <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
目录下便有了
opencv
opencv2
两个目录,在
/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 <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 ..
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: