如果想使用用opencv4+non-free,可以直接使用brew下载安装,方便快捷省心:
brew install opencv --with-contrib
之后配置xcode环境的步骤:
在“Header Search Path”中输入 /usr/local/Cellar/opencv/4.0.1/include/opencv4/
在“Library Search Path”中输入 /usr/local/Cellar/opencv/4.0.1/lib/
然后,在上图“Build settings” 旁边的“Build Phases”中,下,点加号,加入/usr/local/Cellar/opencv/4.0.1/lib/ 中所有opencv的.dylib文件。
=======大功告成=======
然而,brew install方式,目前似乎不能在安装opencv3了,我手上的代码,是opencv3中写的,换到4,有一些报错,我怕改出问题,于是打算再装一个opencv3.4+non-free contrib 用。
首先,下载opencv3.4源码和opencv_contrib源码:
git clone https://github.com/opencv/opencv.git
cd opencv
git checkout 3.4
cd ..
git clone https://github.com/opencv/opencv_contrib.git
git checkout 3.4
千万别忘了checkout,换到3.4 那个版本。
然后按照opencv_contrib的GitHub上的指示,与opencv一起进行编译:
cd opencv
mkdir build
cd build
cmake cmake -DOPENCV_EXTRA_MODULES_PATH=【填入opencv_contrib的位置】 -D WITH_GSTREAMER=OFF -D OPENCV_ENABLE_NONFREE=ON ..
*特别解释一下,
-D WITH_GSTREAMER=OFF 这是因为,我的mac上用brew 安装了gstreamer之后,源码编译opencv时,make就会卡在一个80%左右地方,报错是:/ts/ts_gtest.h:1392:53: error: array initializer must be an initializer list or string literal ……。我发现,那个卡住的部分,是因为cmake检测到我电脑有gstreamer,于是自动要编译一个test gstreamer的程序包。加上这个“=OFF”,即可避免make这一部分。
-D OPENCV_ENABLE_NONFREE=ON :添加nonfree包,是官方给出的指导。
还有,因为编译nonfree包中的features2d,需要下载一些.i文件,而身在中国,不翻墙你是下不来的。而我需恰恰要这个包,于是,我用mac版proxifier+ss 给terminal翻墙,具体方法请自行查一下~
最后,
make -j8
sudo make install
然后再xcode中配置的方法与brew 安装相似,只不过
在“Header Search Path”中输入 /usr/local/include/
在“Library Search Path”中输入 /usr/local/lib/
并且,“Build Phases”中,下,加入/usr/local/lib/ 中所有opencv的.dylib文件(应该是17个)。
大功告成!