最近给MacBook装OpenCV走了很多弯路,读了很多帖子和Blog,但感觉都和我遇到的情况有些不同,他们的博客也写的很简略,所以出于以上几点原因加上想做一下备忘,写了这篇很详细很冗长的Blog。
-----------------------------------------------------------------------------------------------------------
【环境】黑苹果 Snow Leopard 10.6.8 + XCode4.2 + OpenCV2.4.3
【方法】Homebrew 安装 OpenCV 2.4.3
=============================================================
摘要:
(1)用Homebrew为MacOS X安装 Opencv + XCode 调用Opencv详细步骤
(2)为什么不用MacPorts安装Opencv
(3)黑苹果装Opencv遇到的一些事情
=============================================================
【# 1 #】用Homebrew为MacOS X安装 Opencv + XCode 调用Opencv详细步骤:
步骤概要(下文有对这些步骤的超级详述,不懂哪里,看哪里):
【#】如果你的机器已经装了macports,那么在安装homebrew前要先卸载掉macports,二者不兼容
【a】安装Homebrew
【b】用brew selfupdate 更新 Homebrew
【c】用brew install cmake 安装cmake
【d】用brew install opencv 安装opencv
【e】将XCode的编译器改为LLVM GCC 4.2
【f】将opencv的动态库手动拖入“工程”中
【g】运行你的opencv程序!
对上述步骤的超级详述:
(#)卸载MacPorts:
在Terminal中输入: sudo port -f uninstall installed 在Terminal中输入: sudo rm -rf \ /opt/local \ /Applications/DarwinPorts \ /Applications/MacPorts \ /Library/LaunchDaemons/org.macports.* \ /Library/Receipts/DarwinPorts*.pkg \ /Library/Receipts/MacPorts*.pkg \ /Library/StartupItems/DarwinPortsStartup \ /Library/Tcl/darwinports1.0 \ /Library/Tcl/macports1.0 \ ~/.macports
(1)安装Homebrew:(需要Ruby)
注:因为snow leopard 上已经自带Ruby了,所有可以不用自己安装Ruby(通过ruby -v 这条命令在Terminal终端上可以查看装在你机器上的Ruby的版本,也可以用这个方法看一下,你的机器上是否已经装好Ruby啦,如果没有装Ruby则要安装Ruby,安装步骤可以google,很简单)。
看一下Homebrew的官网: http://mxcl.github.com/homebrew/ 进入后,将其拉到最下面,可以看到安装方法,你只要在Terminal(终端)中输入:
ruby -e "$(curl -fsSkL raw.github.com/mxcl/homebrew/go)"
注:不要在前面加sudo否则会有错误提示,但没事,再输入一次正确的即可。
(2)更新Homebrew,在Terminal中输入:brew selfupdate 然后回车,即可
(3)安装cmake, 在Terminal中输入: brew install cmake 然后回车,即可
(4)安装opencv, 在Terminal中输入: brew install opencv 然后回车, 即可
(5)等待其安装完成,至此opencv已经安装在你的macbook上啦,现在的版本是opencv2.4.3
(6)打开XCode,新建一个Command Line Tool 工程,下一步选“C++”
(7)现在你可以写一个小的opencv程序试一下:例如
#include
#include
#include
int main(int argc, char** argv)
{
cvNamedWindow("Image", CV_WINDOW_AUTOSIZE);
IplImage *img=cvLoadImage("/Users/用户名/Pictures/hello.jpg", CV_LOAD_IMAGE_ANYCOLOR); //一定注意:在mac下,这里要填写对你图片的路径哦!
cvShowImage("image", img);
cvWaitKey(0);
cvReleaseImage(&img);
cvDestroyWindow("image");
return 0;
}
大家会发现,现在的XCode已经可以自动完成OpenCV的库函数啦,但如果编译的话还会有很多错误,往下看。
(8)把编译器改为“LLVM GCC 4.2”:
点击你的“项目”(左边最上面蓝色的那个,点一下),然后右边会出一大堆东东,中间偏左,有PROJECT 和 TARGETS 字样,点击 灰色的PROJECT下面你的“工程”,然后在右面上侧选择“All”,然后往下看,找到“Build Options”那块,第二项(第二条)就是编译器,它默认的是"Apple LLVM Compiler 3.0", 你点一下这个东东,它会弹出选项,选LLVM GCC 4.2即可。之后你在点击PROJECT下面的TARGETS那个黑色的东东,看一下它的“Build Options”,现在应该也被改为了LLVM GCC 4.2 啦。
(9)将OpenCV的动态库手动拖入项目:
在XCode中你的工程下建立一个NewGroup(方法:右键你的工程(左上,蓝色的那个)然后点击“New Group”)
然后,打开你的“Finder”(就是你mac下面那个条上,长的像人脸那个图标)然后此时,你同时按住 Shift Command g 这三个建, 然后会弹出来一个对话框,你在里输入“/usr/local”然后回车,它会转入local文件夹下,然后你按如下顺寻进入: Cellar-->opencv-->2.4.3-->lib 你现在已经进到了lib文件夹啦,你会看到一大堆以“dylib”结尾的文件,这些就是“动态库”,然后你找到以下三个动态库:
[a] libopencv_core.2.4.3.dylib
[b] libopencv_highgui.2.4.3.dylib
[c] libopencv_ml.2.4.3.dylib
把它们选中后(按住command建就可以多选)点住,直接拖到你在XCode中刚建好的那个NewGroup文件夹里,然后XCode会弹出个对话框,注意,不要勾选 “Copy items into destination group's folder (if needed)”, 然后点击“Finish”
(10)运行你写的opencv程序
OK,至此,你已经完成了全部工作,会到你的XCode下,运行你的程序,一切搞定!
-----------------------------------------------------------------------------------------------------------
【# 2 #】为什么不用MacPorts安装OpenCV:很多帖子上的人都是用macports安装的opencv,可能也很成功,但不懂他们是怎么弄的,如果哪位大鸟在喝咖啡的时候偶然看到这篇如此自虐的Blog,请勿喷.........本小鸟只是想给大家多提供一种mac下玩opencv的途径。
一开始我也用MacPorts装OpenCV,也很方便,但没装成功,这是根本原因
(1)macports它不显示进度条和百分之几啊,有的时候下一个大的东东(例如10M的那种,呵呵),它就停在那啦,你也不知道它是还在工作啊,还是卡死在那里啦,让人总有种不踏实的感觉,心里上的折磨
(2)macports的站点貌似有些不稳定,有的时候貌似很容易断掉,尤其在天朝这种网络环境下,十分折磨
(3)我的macports无法用port upgrade outdate这条命令
(4)我的macports用port install opencv来装opencv,只是将其下载下来并解压,没有对其源码进行编译,后来我又用port build opencv来编译我的opencv,但最后貌似还是没将opencv安装成功,但也不一定,因为期间又有好多事情发生,有兴趣的且和我的macports有同样弊病的朋友们可以试一下,先port install opencv 然后再 port build opencv看看行不行,试过的留个言哈。
(5)macports检查不了你的机器上,不是用macports安装的那些软件,例如我的Apple LLVM Compiler是跟这XCode一起安装在mac上的,没用macports,但用port build opencv时,macports仍然要再下一遍Apple LLVM Compiler,然后安装它,然后才能用build命令,但Homebrew就不会这样。
(6)安装macports时,要断网安装,否则安装的最后一分钟,可能2个小时都过不去。
总之用Homebrew也是一个不错的选择,看你怎么想啦........
-----------------------------------------------------------------------------------------------------------
【# 3 #】黑苹果装OpenCV遇到的一些事情:
为什么要用黑苹果,原因很简单,因为还没买苹果呢。
(1)我的snow leopard下没有 /usr/local 这个文件夹,真的没有用Terminal查看也没有,安装了Homebrew后才有了这个文件夹,而且还看不到,可能是被系统给隐藏了,因为Homebrew下载安装的软件都在这个文件夹下,所以这个文件夹对我来说很重要,想要转到 /usr/local 文件夹下可以这样(上文已经提到过了,这里赘述一下: 同时按住 Shift command(windows键盘的那个windows标志建) g 这三个毽子,然后在它弹出的对话框中输入: /usr/local 然后回车即可。
(2)mac下安完opencv后写了一个”获得摄像头“的程序,用的是CvCapture *camera=cvCreateCameraCapture(0); 结果其返回“空指针”,后来才发现是因为当时,黑苹果下的摄像头没有驱动起来,之后, 重启电脑就好使啦。
(3)一开始我都是用如 “./hello.jpg” 来加载我的“项目”目录下的图片,但返回空指针,后来知道,在mac下貌似用不了相对路径,只能用 "/Users/用户名/........" 这种才行。
=============================================================
一下写了这么多,只是想打造一个稍微详细点的教程,因为在为mac安装opencv的过程中也看到很多帖子和博客,都写的很简单,很简短,很模糊,所以感觉很折磨,故现在写了这么一篇较为详细的mac下安装opencv的Blog.
如果大家还有什么关于这方面的问题或见解或方法,可以留言或Email我。
【邮@箱】lzninchina (at) sina 点卡姆