首先交代下安装环境MACOSX10.11,安装版本为OpenCV2.4.13,Xcode的版本为7.3.1。
Homebrew类似Ubuntu的apt-get,Fedora的yum,简单来说就是为了方便安装软件而生的。打开Homebrew官方网站http://brew.sh/index_zh-cn.html,找到安装homebrew的ruby命令:
ruby -e "$(curl -fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install)"
输入brew update,然后输入brew upgrade。之后输入brew install cmake这样等待一会cmake就安装好了。
OpenCV下载地址:http://opencv.org/downloads.html
目前最新版本是2.4.13,下载后解压,在终端执行下面代码:
cd
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目录,执行sudomake 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
打开Xcode,新建一个command line工程:
工程名字TestOpenCVDemo,注意语言选择C++。
这样C++的HelloWorld就建好了,编译应该能正常运行。接下来先来配置xcode再来写代码。
最左边选中工程,然后右边选中Targets,再BuildSettings下,右边搜索框里输入search,很快就能找到SearchPaths设置项。在Header Search Paths里输入:/usr/local/include 在Library Search Paths里输入:/usr/local/lib
接着在Build Phases里找到Link BinaryWith Libraries,点击+号
选择add other,然后按下/键,输入lib的路径/usr/local/lib,点go:
然后就是选择OpenCV的库了,用哪个添加哪个,没必要都添加完。我们添加最基础的几个:
libopencv_core.2.4.13.dylib
libopencv_highgui.2.4.13.dylib
libopencv_imgproc.2.4.13.dylib
libopencv_ml.2.4.13.dylib
可以按下command实现多选。添加上面这四个最常用的就可以胜任本次的测试代码了。
在main.cpp里输入以下内容,实现显示一张照片及显示灰度化后的:
#include
#include
#include
using namespace std;
using namespace cv;
int main(int argc, const char * argv[]) {
// insert code here...
std::cout << "Test OpenCV!\n";
char buffer[256];
char* p_cwd = getcwd(buffer, sizeof(buffer));
string path ;
if (p_cwd) {
path = p_cwd;
}
else{
std::cout << "Path Error!\n";
return 0;
}
path += "/Test.jpg";
//string path = "/Volumes/Data/AutumnView.jpg";
Mat image = imread(path);
namedWindow("Test");
imshow("Test", image);
Mat gray;
cvtColor(image, gray, COLOR_RGBA2GRAY);
namedWindow("gray");
imshow("gray", gray);
waitKey(0);
return 0;
}
运行结果如下:
至此大功告成。
参考:
1. http://blog.csdn.net/yanzi1225627/article/details/42113661
2. https://segmentfault.com/a/1190000000711132
3. http://wuzhaoxi1992511.blog.163.com/blog/static/18375811820132213544889/