在Mac上折腾了一天的OpenCV源码安装,记录一下备忘
正常的步骤:
按照说明文档,下载源码,解压,进入目录
mkdir release
cd release
cmake -D BUILD_TESTS=OFF ..
make -j8
sudo make install
使用cmake生成配置文件的时候可以看一下log,一些依赖包类似libjpeg,libpng等等最好先安装上,最简单的方法就是使用MacPorts来安装,方便管理,以后卸载也容易
看起来过程很简单,但是装完了之后。。。c++很好使,但是python功能使用不了
查看了一下,编译python支持的开关变量为BUILD_NEW_PYTHON_SUPPORT=ON,默认为开启的,应该没有什么问题,上网搜了一下原因,原来是要把cv2.so的路径加入到PYTHONPATH,默认情况下cv2.so文件被安装在/usr/local/lib/python2.7/site-packages,这个值是CMakeCache.txt文件中定义的CMAKE_INSTALL_PREFIX和PYTHON_PACKAGES_PATH这两个变量定义的,具体可查看CMakeCache.txt文件,当然这个值可随意修改,建议保留默认。
在/etc/profile或者~/.bash_profile文件中设置PYTHONPATH环境变量:
export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages
于是进入python交互式命令行,导入cv2,能导入,但是出现segmentation fault异常。。。额。。郁闷。。
继续google,找到原因,大概意思是python的环境配置得有问题
在CMakeCache.txt文件中,有两个变量会影响到python模块的编译,分别为PYTHON_INCLUDE_DIR和PYTHON_LIBRARY
其中PYTHON_LIBRARY指向你libpython2.7.dylib路径,一般为/usr/lib/libpython2.7.dylib(版本号可变化),具体路径适你的python安装情况而定,PYTHON_INCLUDE_DIR指向你的python安装路径的include目录,例如我用macports安装的python2.7,这个路径为/opt/local/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7
这两个变量必须正确设置才能正常使用cv2.so的功能,可以直接修改CMakeCache.txt的内容,或者在CMakeCache.txt文件目录下使用命令 'ccmake .',就可交互式编辑。
本来opencv会自动设置这两个变量,一般情况下不需要自己设置,不会出错,但是我的Mac上安装了很多版本的python,系统自带的,macports安装的。。。。各种混乱,搞了半天,一气之下,我把系统自带的python库,运行文件,安装文件都删了,只留下了macports,然后正确设置了编译变量,再编译,安装,使用cv2模块,正常,哈哈
开始进入opencv的世界尽情畅游吧!