百度了一下安装openCV的教程,发现大部分都是使用homebrew
安装的。而homebrew
安装openCV的时候会重复安装一些依赖,比如我电脑上已经有gcc
编译器了,它又在homebrew
的目录下给我安装了一个gcc
。而且还会安装一大堆依赖包在homebrew
目录里面,看起来非常不爽。于是打算直接编译opencv
的源代码来进行安装。
一、安装cmake
使用homebrew
安装cmake(没有homebrew
的同学请自行搜索),在终端输入:
brew install cmake
二、下载openCV源码
到openCV官网选择一个版本的源码Sources
下载即可。下载完成后,在终端进入openCV
的目录:
cd <你的openCV目录>
在目录下新建一个build/
文件夹,用于存放cmake编译生成的文件:
mkdir build
然后使用cmake
编译文件到build/
文件夹中:
cmake -B build -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local
接下来终端会输出一大堆编译的信息,等编译完成后,进入刚刚新建的build/
文件夹:
cd build
build/
文件夹中有cmake
编译出的文件,输入make
继续编译:
make
等终端输出完一堆编译信息后,输入以下指令进行安装:
sudo make install
到这里OpenCV就算安装完毕了,接下来编写代码进行测试,看能不能正常调用。
(*以下是在我的电脑上发现的错误,对于不同的电脑可能有不同的情况,仅供参考。)
三、测试能否正常调用OpenCV
编写以下代码:
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
终端提示:
test.cpp:2:10: fatal error: 'opencv2/opencv.hpp' file not found
到/usr/local/include/
目录下查看,发现只有opencv4/
目录,而opencv2/
目录在opencv4/
目录下。因为include
默认是查找/usr/local/include/
目录中的文件/文件夹,所以没有找到opencv2/
目录。
这个时候有三种解决办法:
- 直接将
/usr/local/include/opencv4/
中的opencv2/
复制一份到/usr/local/include/
下。 - 在
/etc/profile
文件的末尾添加以下语句:export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/include/opencv4
- 使用符号链接命令:
在/usr/local/include
下运行此命令:
ln -s ./opencv4/opencv2/ ./opencv2
之后include
opencv的文件便不会报错,但是运行时还需要链接具体的动态库,可以使用cmake来自动链接,网上教程很多,此处不作赘述。